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嗎? –