SQL int overflow - 插入加密

时间:2012-05-07 05:43:45

标签: sql insert

我正在努力在MS SQL 2008R2中实现加密。从CVS文件加载数据,我将这些数据放在临时表中,现在我想将一些数据移到加密的信用卡表中。但是,我不断收到以下错误。插入代码如下,表格defs如下。

客户端ID低于10 - 导致溢出的数字是第一行数据,CC编号。

错误:

  

Msg 248,Level 16,State 1,Line 4   varchar值'5105105105105100'的转换溢出了一个int列。   声明已经终止。

插入声明:

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
  • FirstLastCCExpiration - 所有varchar(50)

所有数据似乎都已正确导入。

CreditCard:(目的地表)

Hash varbinary(200)
Encrypted varbinary(400)
plaintext char(16)
lastfour int
servicecode int
expirationdate Date
ClientID int

1 个答案:

答案 0 :(得分:0)

语法问题导致溢出: 我对RIGHT函数的使用颠倒了字符和int偏移量,溢出了函数的整数表达式。

正确使用:

RIGHT ( character_expression , integer_expression )