1

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

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

错误:

消息 248,级别 16,状态 1,第 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

临时表:

  • 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
4

1 回答 1

0

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

正确使用:

RIGHT ( character_expression , integer_expression )
于 2012-05-07T06:35:27.840 回答