sql >> データベース >  >> RDS >> Sqlserver

SQLCLR ストアド プロシージャを使用してデータベース テーブルの列を更新できますか (コンパイル済みの dll を使用)

    できます SQLCLR を使用して C# から暗号化を呼び出しますが、これは間違ったアプローチです。カスタム アルゴリズムを実行する必要がある場合は、それを SQLCLR 関数にカプセル化して、UPDATE ステートメントや INSERT や SELECT などで使用できるようにする必要があります。次のようなもの:

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

    次に、その関数を次のように使用できます。

    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;
    

    でも 、カスタム暗号化アルゴリズムを作成する前に、必要なことを正確に実行するいくつかの組込みの ENCRYPTBY / DECRYPTBY 関数を確認することをお勧めします。




    1. PHPMYSQLSETはwhileループでエラーを出します

    2. MySQLでNull値を比較する方法

    3. 副選択するか、副選択しないか?

    4. whereおよびoffset fetch句を使用したSimple SelectがOracleで機能しない