Chèn kích hoạt để loại bỏ thông tin nhạy cảm


7

Một hệ thống nhà cung cấp (tức là ngoài tầm kiểm soát của tôi) đang chèn một hàng vào bảng vào cơ sở dữ liệu mà tôi kiểm soát. Một cột trong phần chèn này sẽ có thông tin nhạy cảm mà tôi không muốn trong cơ sở dữ liệu của mình.

Nếu tôi sử dụng INSTEAD OF INSERTkích hoạt để xóa cột này, liệu thông tin nhạy cảm có còn kết thúc trong nhật ký giao dịch không?


1
Ai đang đọc nhật ký giao dịch?
Aaron Bertrand

1
Hy vọng không có ai. Nhưng tôi sẽ ngủ ngon hơn khi biết thông tin nhạy cảm này không được lưu trữ ở bất cứ đâu (dù là trong nhật ký hay trong bản sao lưu nhật ký).
dmc

Câu trả lời:


7

Có, điều này sẽ ngăn thông tin hiển thị trong nhật ký. Nhật ký giao dịch chỉ cần ghi lại đủ thông tin để khôi phục hàng thực sự được ghi vào trang dữ liệu. Bạn có thể thấy điều này từ việc sử dụng sys.fn_dblognhư dưới đây.

CREATE TABLE dbo.T
  (
     X      int CONSTRAINT PK PRIMARY KEY,
     String varchar(50) NULL
  )

GO

CHECKPOINT;

INSERT INTO dbo.T
VALUES      (1,
             'Private and Confidential')

/*Without INSTEAD OF trigger this phrase found in log record*/
SELECT CASE
         WHEN [Log Record] LIKE '%Private and Confidential%' THEN 1
         ELSE 0
       END,
       [RowLog Contents 0]
FROM   sys.fn_dblog(NULL, NULL)
WHERE  Operation = 'LOP_INSERT_ROWS'
       AND AllocUnitName = 'dbo.T.PK'

GO

CREATE TRIGGER TR
ON dbo.T
INSTEAD OF INSERT
AS
  BEGIN
      SET NOCOUNT ON;

      INSERT INTO dbo.T
                  (X)
      SELECT X
      FROM   INSERTED
  END

go

CHECKPOINT;

INSERT INTO dbo.T
VALUES      (2,
             'Private and Confidential')

GO

/*With INSTEAD OF trigger this phrase no longer found in log record*/
SELECT CASE
         WHEN [Log Record] LIKE '%Private and Confidential%' THEN 1
         ELSE 0
       END,
       [RowLog Contents 0]
FROM   sys.fn_dblog(NULL, NULL)
WHERE  Operation = 'LOP_INSERT_ROWS'
       AND AllocUnitName = 'dbo.T.PK' 

Việc xây dựng INSERTEDbảng giả diễn ra tempdbđể thông tin này có thể xuất hiện trong các tệp dữ liệu ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.