Vì vậy, chúng tôi đã bắt đầu khám phá bằng cách sử dụng dữ liệu thay đổi trên một trong các cơ sở dữ liệu sản xuất của chúng tôi. Chúng tôi muốn biết thời gian của mỗi thay đổi. Đọc qua các hướng dẫn và hướng dẫn, vv có vẻ như cách tiếp cận tiêu chuẩn là sử dụng LSN để liên quan đến cdc.lsn_time_mapping
bảng hệ thống. Cách tiếp cận này hoạt động nhưng không đơn giản và cũng không hiệu quả khi nói về 100 ngàn thay đổi mỗi ngày.
Trong môi trường thử nghiệm, tôi đã thực hiện điều chỉnh sau cho các bảng theo dõi thay đổi. Tôi đã đưa ra một ALTER TABLE
tuyên bố để thêm một cột vào cuối được gọi [__ChangeDateTime]
và làm cho nó có giá trị mặc định GetDate()
. Cách tiếp cận dường như hoạt động, theo dõi thay đổi vẫn hoạt động bình thường, thời gian đang được nắm bắt. Nhưng mucking xung quanh với các bảng hệ thống làm cho tôi một chút lo lắng.
Nếu đây không phải là một lĩnh vực hệ thống mà Microsoft đã thêm từ đầu, họ phải có lý do của họ. Vì thay vào đó họ đã chọn cách tiếp cận LSN thành cdc.lsn_time_mapping, tôi có tự đặt ra vấn đề bằng cách tạo bản hack của riêng mình theo cách này không?
CẬP NHẬT:
Được phát hiện trong quá trình kiểm tra rằng đôi khi GetDate () không đủ chính xác cho nhu cầu của chúng tôi - nhiều thay đổi chia sẻ cùng một lúc. Đề xuất sử dụng sysdatetime () và datetime2 để di chuyển giá trị ra nano giây. Tùy chọn cho năm 2008+ chỉ rõ ràng.