我正在使用新的SQL Server 2016功能 - 始終加密。這是非常酷和簡單的技術 - 但不是小數類型。始終使用十進制加密(18,2)
當我插入值,我越來越喜歡這個(ZP_Test
- 我的數據庫名)錯誤:
操作數類型衝突:以(encryption_type的= '隨機' 加密十進制(4,2), encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'ColomnKey',column_encryption_key_database_name = 'ZP_Test')是與(將encryption_type = '隨機',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'ColomnKey' 加密十進制(18,2)不相容,column_encryption_key_database_name = 'ZP_Test')
聲明無法準備。
我的API是用C#編寫的,請參閱我的代碼,也許你知道解決方案。
SQL查詢的SQL,當錯誤發生時創建表
CREATE TABLE [dbo].[EmpInfo]
(
[EmpID] [int] NULL,
[NatID] [nvarchar](max) COLLATE Cyrillic_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [ColomnKey], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL,
[Amount] [decimal](18, 2) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [ColomnKey], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL
) ON [PRIMARY]
GO
C#代碼示例
command.CommandText = "INSERT INTO EmpInfo(EmpID, NatID, Amount) VALUES (@key, @ssn, @amount)";
command.Parameters.AddWithValue("@key", key);
command.Parameters.AddWithValue("@ssn", DBNull.Value);
command.Parameters.AddWithValue("@amount", Convert.ToDecimal("11.00"));
command.ExecuteNonQuery();
跟蹤 -
exec sp_describe_parameter_encryption N'INSERT INTO EmpInfo(EmpID, NatID, Amount, AmountDec) VALUES (@key, @ssn, @amount, @amountDec)',N'@key int,@ssn nvarchar(7),@amount decimal(4,2)'