Post a reply
Message:
Security Image:
 Last 10 Posts (In reverse order)
SQL Server cung cấp công cụ SQL Server Profiler giúp ghi lại các hoạt động đang xảy ra trong database, các thông tin này sẽ hữu ích để khắc phục sự cố và tối ưu hóa hệ thống.

1. Sử dụng SQL Server Profiler để ghi lại các sự kiện
Tại SSMS, vào menu Tools > SQL Server Profiler, rồi kết nối vào SQL server.

Sau khi kết nối vào server, SQL Server Profiler sẽ mở sẵn cửa sổ Trace Properties. Bạn khai báo Trace name và chọn mẫu ở mục Use the template.
Ví dụ mình muốn theo dõi các lock để tìm deallock thì mình chọn TSQL_Locks.
UserPostedImage

Mình chỉ muốn SQL theo dõi các event ở db có tên là MyDb, nên mình click vào tên cột DatabaseName để mở cửa sổ cài đặt lọc và điền vào điều kiện Like giá trị MyDb.
Tương tự với DatabaseName, bạn cũng có thể đặt lọc thêm nhiều tiêu chí khác.
UserPostedImage

Sau khi đã thiết lập xong, bạn bấm nút Run để SQL Server Profiler bắt đầu theo dõi event.

2. Phân tích trace để tìm nguyên nhân deallock
Thực tế với ứng dụng của mình, mình đã gặp lỗi deallock khi lưu dữ liệu với thông báo dạng như sau:
Transaction (Process ID 98) was deadlocked on lock | generic waitable object resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

Tại thời điểm ứng dụng xảy ra lỗi, mình lọc tìm trong đống log mà SQL Server Profiler đã ghi lại, thì phát hiện ra câu lệnh Update của mình cùng truy cập một ObjectID đang bị lock.
UserPostedImage

Vậy là đã biết nguyên nhân gây lỗi, nên mình cũng dễ dàng có phương án xử lý sau đó.