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