SQL Server: Tập lệnh theo dõi bảng mới được Insert, Update trong SQL Server
Khi làm việc với cơ sở dữ liệu SQL Server, việc theo dõi các bảng mới được cập nhật hoặc thêm dữ liệu là rất quan trọng để kiểm soát thay đổi và khắc phục sự cố. Dưới đây là các phương pháp hiệu quả để xác định bảng nào mới được insert hoặc update.
1. Sử dụng System Dynamic Management Views (DMV)
Query cơ bản theo dõi thay đổi trong 24 giờ qua:
SELECT
OBJECT_NAME(object_id) AS TableName,
last_user_update AS LastUpdate,
user_updates AS TotalUpdates,
last_user_seek AS LastSeek,
last_user_scan AS LastScan
FROM
sys.dm_db_index_usage_stats
WHERE
database_id = DB_ID()
AND last_user_update > DATEADD(HOUR, -24, GETDATE())
ORDER BY
last_user_update DESC;Query chi tiết với thông tin schema:
SELECT
t.name AS TableName,
s.name AS SchemaName,
ius.last_user_update AS LastUpdateTime,
ius.user_updates AS TotalUpdates,
ius.last_user_seek AS LastSeekTime,
ius.last_user_scan AS LastScanTime
FROM
sys.dm_db_index_usage_stats ius
JOIN
sys.tables t ON ius.object_id = t.object_id
JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
ius.database_id = DB_ID()
AND ius.last_user_update > DATEADD(HOUR, -24, GETDATE())
ORDER BY
ius.last_user_update DESC;Check for recently modified tables:
Lưu ý: Dữ liệu trong DMV sẽ bị reset mỗi khi SQL Server khởi động lại.
2. Sử dụng Change Tracking (Theo dõi thay đổi)
Bật Change Tracking cho database:
sql
Bật Change Tracking cho bảng cụ thể:
sql
Truy vấn thông tin thay đổi:
sql
3. Sử dụng Change Data Capture (CDC) - Phiên bản Enterprise
Bật CDC cho database:
sql
Bật CDC cho bảng cụ thể:
sql
Truy vấn thay đổi:
sql
4. Phương pháp thủ công với Timestamp Columns
Thêm cột timestamp vào bảng:
sql
Tạo trigger để tự động cập nhật:
sql
Truy vấn các bảng được cập nhật gần đây:
sql
5. Tạo bảng Log để theo dõi thay đổi
Tạo bảng log:
sql
Tạo trigger để ghi log:
sql
Kết luận
Tùy vào nhu cầu và phiên bản SQL Server bạn đang sử dụng, có thể lựa chọn phương pháp phù hợp:
DMV: Nhanh, đơn giản nhưng dữ liệu không tồn tại lâu
Change Tracking: Phù hợp cho ứng dụng cần đồng bộ dữ liệu
CDC: Mạnh mẽ nhưng chỉ có trong phiên bản Enterprise
Timestamp Columns & Triggers: Linh hoạt, hoạt động trên mọi phiên bản
PreviousSQL Server: Tập lệnh để tìm tất cả các giá trị Mặc định với CộtNextSQL Server: Cách khởi động SQLServer bỏ qua Database bị lỗi
Last updated
Was this helpful?