Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Puis-je utiliser la procédure stockée SQLCLR pour mettre à jour une colonne d'une table de base de données (en utilisant une dll compilée)

Vous pouvez utilisez SQLCLR pour appeler le chiffrement à partir de C #, bien que ce soit la mauvaise approche. Si vous avez besoin de faire un algorithme personnalisé, vous devez l'encapsuler dans une fonction SQLCLR afin qu'il puisse être utilisé dans une instruction UPDATE ou même un INSERT ou SELECT ou n'importe où. Quelque chose comme :

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

Ensuite, vous pouvez utiliser cette fonction comme suit :

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;

MAIS , avant d'écrire un algorithme de chiffrement personnalisé, vous voudrez peut-être vérifier les différentes fonctions intégrées ENCRYPTBY / DECRYPTBY qui pourraient faire exactement ce dont vous avez besoin :