use*_*287 5 c# sql-server entity-framework always-encrypted
我使用列加密对 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
Run Code Online (Sandbox Code Playgroud)
为了将数据直接从 SSMS 插入加密列,您需要设置Parameterization for Always Encrypted
为True
。
但是 SSMS 2016 不支持此功能,因此您需要安装较新版本的 SSMS,可以在此处找到。
获得 SSMS 17.0 后,您需要在连接到实例时为连接启用列加密。
为了将数据插入到指定的加密列中,当您打开新的查询窗口时,请执行以下操作:
Query Options
从Query
菜单中选择Advanced
,选择Enable Parameterization for Always Encrypted
现在您将能够将数据直接从 SSMS 插入到表中。
为了以纯文本形式查看加密的列值,您需要Enable
Column Encryption Setting
。为此,请执行以下操作:
Connect to Server
对话框中Options
Additional Connection Parameters
Column Encryption Setting = Enabled
归档时间: |
|
查看次数: |
17390 次 |
最近记录: |