sql >> Base de Datos >  >> RDS >> Sqlserver

¿Puedo usar el procedimiento almacenado SQLCLR para actualizar una columna de una tabla de base de datos (usando algún dll compilado)

Tu puedes use SQLCLR para llamar al cifrado desde C#, aunque este es un enfoque incorrecto. Si necesita hacer un algoritmo personalizado, debe encapsularlo en una función SQLCLR para que pueda usarse en una instrucción UPDATE o incluso INSERT o SELECT o en cualquier lugar. Algo como:

public class SP
{
  [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)]
  public static SqlString EncryptByAES(SqlString TextToEncrypt)
  {
     return DoSomething(TextToEncrypt.Value);
  }
}

Entonces puede usar esa función de la siguiente manera:

UPDATE tb
SET    tb.FieldA = EncryptByAES(tb.FieldA)
FROM   dbo.TableName tb
WHERE  tb.FieldA some_test_to_determine_that_FieldA_is_not_alreay_encrypted;

PERO , antes de escribir un algoritmo de cifrado personalizado, es posible que desee comprobar las diversas funciones ENCRYPTBY / DECRYPTBY emparejadas integradas que pueden hacer exactamente lo que necesita: