Làm cách nào tôi có thể giám sát cơ sở dữ liệu SQL Server để thay đổi bảng mà không cần sử dụng trình kích hoạt hoặc sửa đổi cấu trúc của cơ sở dữ liệu theo bất kỳ cách nào? Môi trường lập trình ưa thích của tôi là .NET và C #.
Tôi muốn có thể hỗ trợ bất kỳ SQL Server 2000 nào SP4 hoặc mới hơn. Ứng dụng của tôi là một trực quan hóa dữ liệu cho sản phẩm của công ty khác. Cơ sở khách hàng của chúng tôi có hàng ngàn người, vì vậy tôi không muốn phải đưa ra các yêu cầu rằng chúng tôi sửa đổi bảng của nhà cung cấp bên thứ ba trong mỗi lần cài đặt.
Bằng cách "thay đổi bảng" Tôi có nghĩa là thay đổi dữ liệu bảng, không thay đổi cấu trúc bảng.
Cuối cùng, tôi muốn thay đổi để kích hoạt một sự kiện trong ứng dụng của mình, thay vì phải kiểm tra các thay đổi trong một khoảng thời gian.
Cách hành động tốt nhất theo yêu cầu của tôi (không kích hoạt hoặc sửa đổi lược đồ, SQL Server 2000 và 2005) dường như là sử dụng BINARY_CHECKSUM
hàm trong T-SQL . Cách tôi dự định thực hiện là thế này:
Cứ sau X giây lại chạy truy vấn sau:
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*))
FROM sample_table
WITH (NOLOCK);
Và so sánh với giá trị được lưu trữ. Nếu giá trị đã thay đổi, hãy đi qua từng hàng trong bảng bằng cách sử dụng truy vấn:
SELECT row_id, BINARY_CHECKSUM(*)
FROM sample_table
WITH (NOLOCK);
Và so sánh tổng kiểm tra trả lại với các giá trị được lưu trữ.