Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tôi có thể sử dụng thủ tục được lưu trữ SQLCLR để cập nhật một cột của bảng cơ sở dữ liệu không (sử dụng một số dll đã biên dịch)

Bạn có thể sử dụng SQLCLR để gọi mã hóa từ C #, mặc dù đây là cách tiếp cận sai. Nếu bạn cần thực hiện một thuật toán tùy chỉnh, bạn nên gói nó vào một hàm SQLCLR để nó có thể được sử dụng trong câu lệnh UPDATE hoặc thậm chí là INSERT hoặc SELECT hoặc ở bất kỳ đâu. Một cái gì đó như:

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

Sau đó, bạn có thể sử dụng chức năng đó như sau:

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;

NHƯNG , trước khi viết thuật toán mã hóa tùy chỉnh, bạn có thể muốn xem một số hàm ENCRYPTBY / DECRYPTBY được ghép nối tích hợp có thể thực hiện chính xác những gì bạn cần:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nối hai bảng không liên quan trong sql

  2. Nén một phân vùng cụ thể trong một bảng trong SQL Server (T-SQL)

  3. ROW_NUMBER () không có hơn trong SQL

  4. chỉ lấy phần ngày từ giá trị datetime bằng cách sử dụng khung thực thể

  5. Tìm tên tham số của một thủ tục được lưu trữ