Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Posso usar o procedimento armazenado SQLCLR para atualizar uma coluna de uma tabela de banco de dados (usando alguma dll compilada)


Você pode use SQLCLR para chamar a criptografia do C#, embora essa seja a abordagem errada. Se você precisar fazer um algoritmo personalizado, você deve encapsular isso em uma função SQLCLR para que possa ser usado em uma instrução UPDATE ou mesmo em um INSERT ou SELECT ou em qualquer lugar. Algo como:
public class SP
{
  [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)]
  public static SqlString EncryptByAES(SqlString TextToEncrypt)
  {
     return DoSomething(TextToEncrypt.Value);
  }
}

Então você pode usar essa função da seguinte forma:
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;

MAS , antes de escrever um algoritmo de criptografia personalizado, convém verificar as várias funções ENCRYPTBY / DECRYPTBY emparelhadas integradas que podem fazer exatamente o que você precisa: