4

列の暗号化を使用して、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
4

3 に答える 3