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:

  1. DMV: Nhanh, đơn giản nhưng dữ liệu không tồn tại lâu

  2. Change Tracking: Phù hợp cho ứng dụng cần đồng bộ dữ liệu

  3. CDC: Mạnh mẽ nhưng chỉ có trong phiên bản Enterprise

  4. Timestamp Columns & Triggers: Linh hoạt, hoạt động trên mọi phiên bản

Last updated

Was this helpful?