Operand type clash: varchar ist nicht kompatibel mit varchar (50), das versucht, in eine verschlüsselte Datenbank einzufügen

Ich bekomme einSqlException:

Operand type clash: varchar ist nicht kompatibel mit varchar (50), das mit (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_c Verschlüsselungsmetadaten wurden vom Client empfangen. Der Fehler ist beim Aufrufen des Stapels aufgetreten. Daher kann der Client die Metadaten für die Parameterverschlüsselung aktualisieren, indem er sp_describe_parameter_encryption aufruft und erneut versucht.

Mein C # -Code:

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();
    }
}

Und meine gespeicherte Prozedur:

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;

Ich habe keine Probleme beim Einfügen von Daten in nicht verschlüsselte Felder.

Ich habe diesen Artikel gefunden

http: //dataap.org/sql-2016-ctp/column-level-encryption-using-always-encrypted-in-sql-server-2016

Mein Problem ist ähnlich, aber ich habe die Lösung nicht gefunden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage