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ệnTạ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.
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.
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 deallockThự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.
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 đó.
Edited by user
2021-01-12T13:09:05Z
|
Reason: Not specified