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

Kan jeg bruge SQLCLR-lagret procedure til at opdatere en kolonne i en databasetabel (ved hjælp af en kompileret dll)

Du kan brug SQLCLR til at kalde kryptering fra C#, selvom dette er den forkerte tilgang. Hvis du har brug for at lave en brugerdefineret algoritme, bør du indkapsle den i en SQLCLR-funktion, så den kan bruges i en UPDATE-sætning eller endda en INSERT eller SELECT eller hvor som helst. Noget som:

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

Så kan du bruge den funktion som følger:

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;

MEN , før du skriver en brugerdefineret krypteringsalgoritme, vil du måske tjekke de flere indbyggede parrede ENCRYPTBY / DECRYPTBY-funktioner, der kan gøre præcis, hvad du har brug for:




  1. DB Design til at gemme brugerdefinerede felter til en tabel

  2. Ydeevne af dynamisk SQL vs. lagrede procedurer på Oracle

  3. Hvorfor får jeg denne fejlmeddelelse "Kommunikationslink-fejl Den sidste pakke sendt...", når jeg opretter forbindelse til MySQL med Java (Netbeans)?

  4. Hvordan sender man en liste over ID'er til MySQL-lagret procedure?