Tôi đang thử nghiệm ứng dụng của mình Tôi cần một số mã ổn định mô phỏng sự bế tắc trên trang web cơ sở dữ liệu (tập lệnh sql nếu có thể).
Cảm ơn bạn.
THÊM:
Tôi đang thử nghiệm ứng dụng của mình Tôi cần một số mã ổn định mô phỏng sự bế tắc trên trang web cơ sở dữ liệu (tập lệnh sql nếu có thể).
Cảm ơn bạn.
THÊM:
Câu trả lời:
Cách tốt nhất là sử dụng các bảng bạn đã có. Tạo hai bảng - bảng-a, bảng-b Để kiểm tra, bạn thậm chí có thể cập nhật cùng một cột với cùng thông tin để bạn không ảnh hưởng đến bất kỳ dữ liệu thực nào.
Ví dụ: CẬP NHẬT bảng_a đặt ID = ID trong đó ID = 100;
Mở hai phiên vào cùng một cơ sở dữ liệu. Trên một, chạy
BEGIN TRAN
update table_a set ID=ID where ID = 100;
Trên hai đường chạy
BEGIN TRAN
update table_b set ID=ID where ID =100;
Sau đó, sao chép các báo cáo cập nhật vào các phiên đối lập và chạy cùng một lúc. Trong một,
update table_b set ID=ID where ID =100;
Trong hai
update table_a set ID=ID where ID = 100;
Tôi mới thử cái này bây giờ và dùng MS-SQL
Msg 1205, Level 13, State 56, Line 1
Transaction (Process ID 23) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Sử dụng sp_getapplock
quy trình được lưu trữ của hệ thống để lấy những gì cần khóa trên mã mẫu của bạn.
Nói đúng ra, đây là một semaphore Dijkstra . Vẫn hữu ích
sp_getapplock
sẽ không ném lỗi. Nó sẽ chờ thời gian chờ hết hạn hoặc (nếu không có thời gian chờ), quay trở lại -3
( msdn.microsoft.com/en-us/l Library / ms189823.aspx )
Đây là một phương pháp khác tương tự như phương pháp được đăng ở trên ->
CREATE TABLE Tbl1 (id INT NOT NULL PRIMARY KEY CLUSTERED, col INT)
CREATE TABLE Tbl2 (id INT NOT NULL PRIMARY KEY CLUSTERED, col INT REFERENCES dbo.Tbl1(id))
Tập lệnh được sử dụng trong Cửa sổ truy vấn số 1
BEGIN TRAN
INSERT dbo.Tbl1 (id, col) VALUES (2, 999)
Tập lệnh được sử dụng trong Cửa sổ truy vấn # 2
BEGIN TRAN
INSERT dbo.Tbl2 (id, col) VALUES (111, 2)
Tập lệnh được thêm vào Cửa sổ truy vấn số 1
INSERT dbo.Tbl2 (id, col) VALUES (111, 555)
Để biết thêm chi tiết về điều này, hãy tham khảo http://ajitananthram.wordpress.com/2014/02/23/scripts-to-force-a-deadlock-in-sql-server/