1
我正在MS SQL 2008R2中实现加密。从CVS文件加载数据,我将这些数据存储在临时表中,现在我想将这些数据中的一部分移动到加密的信用卡表中。但是,我不断收到以下错误。插入代码如下表所示。SQL int overflow - 插入加密
客户端ID低于10 - 导致溢出的数字是第一行数据CC号。
错误:
Msg 248, Level 16, State 1, Line 4 The conversion of the varchar value '5105105105105100' overflowed an int column. The statement has been terminated.
Insert语句:
OPEN SYMMETRIC KEY CreditCardKey
DECRYPTION BY CERTIFICATE CreditCardCert;
insert into CreditCard
Select
HASHBYTES('SHA1', t.CreditCard),
EncryptByKey(key_guid('CreditCardKey'), t.CreditCard),
'',
RIGHT(4, t.CreditCard),
'1',
t.Expiration,
convert(int, t.ClientID)
From TempTbl t
TempTbl:
ClientID int
。First
,Last
,CC
,Expiration
- 全部varchar(50)
。
所有数据似乎都已正确导入。
信用卡式:(目标表)
Hash varbinary(200)
Encrypted varbinary(400)
plaintext char(16)
lastfour int
servicecode int
expirationdate Date
ClientID int
东西,某处,正试图为CC数转换为'int'。在你发布的代码中只有一个明显的'int'转换 - 如果这些列是你指定的类型,这甚至不需要 - 这是你的实际代码,或者你可能在发布之前过度消毒了它在这里? –
不,这是我在查询窗口中执行的内容的直接副本......我现在只是在考虑解释,我最初从CVS导入数据,出现错误并将其移入新的临时表有更好的数据类型...我认为它/必须被转换为适合这个新表,不确定是否可以这样做? (此举是一个简单的插入...选择*)。 – Volvox
这个新表中的ClientID是什么 - 它实际上是一个int吗? –