Gần đây chúng tôi cũng đã bắt đầu nhìn vào CDC. Tôi không phải là một chuyên gia về chủ đề này, nhưng tôi nghĩ rằng tôi có một số câu trả lời cho câu hỏi của bạn.
Đối với hầu hết các phần, CDC sẽ giúp bạn đạt được mục tiêu về một lịch sử hoàn toàn có thể theo dõi, nhưng tôi không nghĩ rằng nó sẽ đưa bạn đến đó.
Trước hết:
chúng tôi thường xuyên thay đổi lược đồ cơ sở dữ liệu ... Có cơ chế cập nhật bảng CDC sang lược đồ mới không
Và đây là nơi tôi nghĩ CDC sẽ làm bạn thất vọng. Các tài liệu MSDN dưới phần "Hiểu Change Tracking trên cao" là khá rõ ràng rằng nó sẽ không theo dõi những thay đổi schema cho bạn. Ví dụ Alter Table Add Column
: với :
Nếu một cột mới được thêm vào bảng theo dõi thay đổi, việc thêm cột không được theo dõi. Chỉ các bản cập nhật và thay đổi được thực hiện cho cột mới được theo dõi.
Drop Column
phức tạp hơn một chút
Tuy nhiên, bạn nên sử dụng các tập lệnh DB để thay đổi lược đồ của mình để bạn không nhất thiết phải dựa vào CDC ở đây. Điều đó cho phép bạn có sự thống nhất giữa các lược đồ QA và Sản xuất. Và thay đổi thành QA nên được thực hiện bằng tập lệnh để có thể áp dụng chính xác các thay đổi tương tự cho Prod. Không quá khó để trích xuất các thay đổi lược đồ từ các tập lệnh đó. Điều này có thể có nghĩa là thứ nguyên "thời gian" trong lịch sử của bạn được điều khiển theo phiên bản thay vì thời gian thực tế, nhưng kết quả cuối cùng sẽ giống nhau.
Nếu bạn chưa có, hãy tạo một bảng để theo dõi phiên bản lược đồ cơ sở dữ liệu của bạn. Và sau đó đặt bảng phiên bản lược đồ cơ sở dữ liệu đó dưới CDC để bạn có thể căn chỉnh các thay đổi vĩ mô cho lược đồ chống lại các thay đổi vi mô trong một bảng cụ thể.
Theo hiểu biết của tôi, bạn vẫn sẽ thấy dữ liệu được thêm vào (các) cột mới bất kể CDC không hiển thị thay đổi lược đồ. Và việc di chuyển dữ liệu từ bảng này sang bảng khác cũng nên được CDC chọn.
Có cách thực hành tốt nhất nào để bạn xử lý dữ liệu bị bắt khi di chuyển lược đồ cơ sở dữ liệu không?
Đối xử với nó như bạn sẽ đối xử với một cuộc kiểm toán. Bạn cần hiểu những gì bạn đang kiểm tra, tại sao bạn kiểm tra nó và bạn cần giữ thông tin đó trong bao lâu. Phạm vi và duy trì là hai lỗi lớn nhất khi nói đến một nhiệm vụ như thế này.
Các công cụ báo cáo của CDC rất khắc khổ, vì vậy bạn phải biết bối cảnh của những thay đổi. Thật quá dễ dàng để nói "theo dõi mọi thứ !" và kết quả là không có gì có thể sử dụng được. Tương tự như vậy, bạn có thể nhân đôi kích thước cơ sở dữ liệu của mình bằng cách giữ một bản sao của mọi thay đổi. Trên một chiếc bàn cao có nhiều chèn và xóa, bạn sẽ kết thúc với sự phát triển thiên văn. Bản thân điều đó không tệ, nhưng bạn cần lập ngân sách cho sự tăng trưởng đó và có phương tiện để kiểm tra tất cả dữ liệu được tạo ra.
Vì vậy, điều này giúp bạn trở lại để hiểu lý do tại sao bạn đang bị thúc đẩy để có thể truy xuất nguồn gốc hoàn toàn. Chắc chắn có những lý do hợp lệ cho yêu cầu đó. Nhưng bạn sẽ không thể cấu trúc kiểm toán cơ sở dữ liệu hiệu quả cho đến khi bạn biết lý do tại sao bạn phải đáp ứng yêu cầu đó.