【发布时间】:2017-03-09 01:39:28
【问题描述】:
我收到了SqlException:
操作数类型冲突:varchar 与加密的 varchar(50) 不兼容 与 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1',column_encryption_key_database_name = 'PB') collation_name = 'SQL_Latin1_General_CP1_CI_AS'\r\n参数不正确 从客户端收到加密元数据。发生错误 在调用批处理期间,因此客户端可以 通过调用刷新参数加密元数据 sp_describe_parameter_encryption 并重试。
我的 C# 代码:
using (var connection = new SqlConnection(GetConnectionString()))
{
using (var cmd = new SqlCommand("Clients_Insert", connection))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@Email", SqlDbType.VarChar, 50).Value = client.Email;
cmd.Parameters.Add("@ContactPerson", SqlDbType.VarChar, 400).Value = client.ContactPerson;
connection.Open();
cmd.ExecuteNonQuery();
}
}
还有我的存储过程:
ALTER PROCEDURE [dbo].[Clients_Insert]
@Email VARCHAR(50),
@ContactPerson VARCHAR(400)
AS
BEGIN
INSERT into dbo.Clients(Email, ContactPerson)
VALUES (@Email, @ContactPerson);
SELECT SCOPE_IDENTITY();
END;
在未加密的字段中插入数据没有问题。
我找到了这篇文章
http://dataap.org/sql-2016-ctp/column-level-encryption-using-always-encrypted-in-sql-server-2016/
我的问题类似,但我没有找到解决方案。
【问题讨论】:
-
你解决过这个问题吗?
标签: c# asp.net sql-server encryption always-encrypted