Operand type clash: varchar es incompatible con varchar (50) que intenta insertar en una base de datos encriptada
Estoy obteniendo unSqlException
:
Cifrado de la. Se recibieron metadatos del cliente. El error se produjo durante la invocación del lote y, por lo tanto, el cliente puede actualizar los metadatos de cifrado de parámetros llamando a sp_describe_parameter_encryption y reintentando.
Mi código 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();
}
}
Y mi procedimiento almacenado:
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;
No tengo problemas para insertar datos en campos no cifrados.
Encontre este articulo
http://dataap.org/sql-2016-ctp/column-level-encryption-using-always-encrypted-in-sql-server-2016/
Mi problema es similar pero no he encontrado la solución.