我已經使用列加密在sql 2016表中加密了幾列。現在我想將數據插入該表中。我試圖創建一個存儲過程並執行該過程的參數,但我得到以下錯誤。如何在sql 2016中的表中插入值,其列始終是加密的?
列/變量'@lastName'的加密方案不匹配。對於列/變量 加密方案是(將encryption_type = 'PLAINTEXT')和近線 '0' 的表達希望它是 (將encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 「CEK_Auto1 ',column_encryption_key_database_name ='BROps_TestDB')(或 較弱)。
另外,我在那裏值在SQL 2008(我們正在試圖升級到SQL 2016年始終加密功能)使用實體框架插入表中現有的應用程序。 那麼,是否有任何標誌或任何方法,我們可以通過我們的代碼最小的變化插入數據到SQL 2016(列加密)?
我已經給出了示例存儲過程代碼以及該存儲過程的執行情況。
CREATE PROCEDURE dbo.AddCustomer
@CustomerID int,
@FirstName nvarchar(25),
@LastName nvarchar(25),
@SIN nvarchar(11),
@CreditCardNumber nvarchar(25),
@EmailAddress nvarchar(50),
@PhoneNumber nvarchar(25),
@TerritoryID int
AS
BEGIN
INSERT INTO [dbo].[Customers]
([CustomerID]
,[FirstName]
,[LastName]
,[SIN]
,[CreditCardNumber]
,[EmailAddress]
,[PhoneNumber]
,[TerritoryID])
VALUES
(@CustomerID,
@FirstName,
@LastName,
@SIN,
@CreditCardNumber,
@EmailAddress,
@PhoneNumber,
@TerritoryID)
END
----------------------------------------
DECLARE @CustomerID int,
@FirstName nvarchar(25),
@LastName nvarchar(25),
@SIN nvarchar(11),
@CreditCardNumber nvarchar(25),
@EmailAddress nvarchar(50),
@PhoneNumber nvarchar(25),
@TerritoryID int
SET @CustomerID = 1
SET @FirstName = 'David'
SET @LastName = 'Postlethwaite'
SET @SIN = '12345-3-ee-3'
SET @CreditCardNumber = '1111-1233-1231-1233'
SET @EmailAddress = '[email protected]'
SET @PhoneNumber = '406555'
SET @TerritoryID = 1
execdbo.AddCustomer @CustomerID,@FirstName,@LastName,@SIN,@CreditCardNumber,@EmailAddress,
@PhoneNumber,@TerritoryID
我試圖插入和使用Enti更新數據庫中具有加密列的行ty框架。 你能指點我可以參考的材料嗎? – user3775287
請參閱此文章(https://blogs.msdn.microsoft.com/sql_pfe_blog/2016/07/19/getting-started-with-always-encrypted-part-2/)瞭解如何插入始終加密列使用存儲過程和本文(https://blogs.msdn.microsoft.com/sqlsecurity/2015/08/27/using-always-encrypted-with-entity-framework-6/)來了解如何使用Always Encrypted與實體框架 –