SQL Server Change Data Capture là một tính năng đọc dữ liệu lịch sử từ nhật ký giao dịch SQL Server và lưu trữ chúng trong một bảng đặc biệt.
Thông qua việc sử dụng các hàm giá trị bảng đặc biệt (TVF), sau đó cho phép người dùng truy vấn dữ liệu này, cho phép có thể nhận được tất cả các thay đổi trên một bảng cụ thể hoặc chỉ những thay đổi thuần phát sinh từ những thay đổi trong một thời gian cụ thể.
CDC có những lợi thế nhất định
- Nó có thể được cấu hình để chỉ theo dõi các bảng hoặc cột nhất định.
- Nó có thể xử lý các thay đổi mô hình ở một mức độ nhất định.
- Nó không ảnh hưởng nhiều đến hiệu suất như các trình kích hoạt vì nó hoạt động với nhật ký giao dịch.
- Nó dễ dàng được kích hoạt / vô hiệu hóa và không yêu cầu các cột bổ sung trên bảng cần được theo dõi.
Nó cũng có một số nhược điểm:
- Số lượng dữ liệu lịch sử có thể trở nên rất nhanh.
- Bạn không thể theo dõi ai đã thực hiện các thay đổi (ít nhất là không xóa).
- Dữ liệu lịch sử cần một chút thời gian để bắt kịp, bởi vì nó dựa trên nhật ký giao dịch.
- Nó phụ thuộc vào SQL Server Agent. Nếu Tác nhân không chạy hoặc gặp sự cố, không có lịch sử nào được theo dõi.
Tôi đã đọc khá nhiều về CDC và trong khi tôi biết cách sử dụng nó, tôi vẫn không chắc nó có phải là công cụ phù hợp với mình không.
- Đối với những nhiệm vụ / kịch bản nào là CDC, công cụ phù hợp? (ví dụ: Cho phép người dùng khôi phục đối tượng dữ liệu đến một thời điểm nhất định? Kiểm toán? Hiển thị toàn bộ lịch sử dữ liệu?)
- Khi nào bạn không nên sử dụng CDC mà sử dụng giải pháp dựa trên kích hoạt tùy chỉnh?
- Bạn có thể sử dụng CDC trong cơ sở dữ liệu vận hành và sử dụng dữ liệu CDC trong một ứng dụng hoạt động không? (ví dụ: hiển thị nó cho người dùng cuối) Hoặc đây rõ ràng là một sự lạm dụng của tính năng này?
Tôi thường nghe nói rằng CDC là một công cụ kiểm toán, nhưng đó không phải là SQL Server Audit dùng để làm gì? Có phải cả hai công cụ khác nhau cho cùng một nhiệm vụ? Hoặc CDC có thể được sử dụng cho những thứ khác?
Kịch bản hiện tại của tôi là tôi được yêu cầu xây dựng một khung dữ liệu đáng tin cậy, được cho là cơ sở cho nhiều ứng dụng trong tương lai. Các yêu cầu chính xác là mờ, nhưng một là nó có thể theo dõi lịch sử dữ liệu và khôi phục các mục cũ hơn cùng với tất cả dữ liệu liên quan từ các bảng khác. Tôi đang đánh giá CDC ngay bây giờ như là một tùy chọn, nhưng không chắc chắn liệu đây có phải là hướng đi hay không, vì tôi thực sự không thể tìm thấy bất kỳ trường hợp sử dụng được đề xuất nào.
Mặc dù tôi đánh giá cao lời khuyên cho kịch bản cụ thể của mình, các câu trả lời sẽ đưa ra lời khuyên chung về thời điểm hoặc khi không sử dụng Change Data Capture.