首页 > 解决方案 > 无法将 varchar 空/空值插入或更新到始终加密的列中

问题描述

我正在尝试使用 sql 客户端将 C# 中的空值""null值更新为始终加密的列;但是我得到了错误。如果我传递一个空格,它会起作用" "

错误:

使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK', column_encryption_key_database_name = 'db') 加密的 nvarchar(4000) 与使用 (encryption_type = 'DETERMINISTIC', encryption_algorithm_name 加密的 nvarchar(50) 不兼容AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'CEK',column_encryption_key_database_name = 'db')

标签: sql-serveralways-encrypted

解决方案


工作代码如下:

        SqlConnection connection = new SqlConnection(dbString);
        connection.Open();
        SqlParameter p = new SqlParameter("@lastname", System.Data.SqlDbType.NVarChar, 50);
        p.Value = string.Empty;

        SqlCommand command = new SqlCommand("update associate set lastname=@lastname", connection);
        command.Parameters.Add(p);
        command.ExecuteNonQuery();
        connection.Close();

问题是客户端参数定义必须与服务器上的加密列类型完全匹配。


推荐阅读