列の暗号化を使用して、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 = 'david@clunyweb.co.uk'
SET @PhoneNumber = '406555'
SET @TerritoryID = 1
execdbo.AddCustomer @CustomerID,@FirstName,@LastName,@SIN,@CreditCardNumber,@EmailAddress,
@PhoneNumber,@TerritoryID