Тип оппонента clash: varchar несовместим с varchar (50), пытающимся вставить его в зашифрованную базу данных
Я получаюSqlException
:
Столкновение с типом операнда: varchar несовместим с varchar (50), зашифрованным с помощью (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', CEK_Actoption_key_name = 'CEK_Auto1' метаданные были получены от клиента. Ошибка произошла во время вызова пакета, и поэтому клиент может обновить метаданные шифрования параметра, вызвав 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/
Моя проблема похожа, но я не нашел решения.