Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Posso utilizzare la procedura memorizzata SQLCLR per aggiornare una colonna di una tabella di database (utilizzando alcune dll compilate)

puoi utilizzare SQLCLR per chiamare la crittografia da C#, sebbene questo sia l'approccio sbagliato. Se è necessario eseguire un algoritmo personalizzato, è necessario incapsularlo in una funzione SQLCLR in modo che possa essere utilizzato in un'istruzione UPDATE o anche in INSERT o SELECT o ovunque. Qualcosa come:

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

Quindi puoi usare quella funzione come segue:

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;

MA , prima di scrivere un algoritmo di crittografia personalizzato, potresti voler controllare le numerose funzioni ENCRYPTBY / DECRYPTBY integrate che potrebbero fare esattamente ciò di cui hai bisogno: