Thời gian chờ được thực thi bởi ADO.NET. SQL Server không biết một điều như thời gian chờ lệnh. Máy khách .NET sẽ gửi một lệnh TDS "chú ý". Bạn có thể quan sát hành vi này với SQL Profiler vì nó có một sự kiện "chú ý".
Khi SQL Server nhận được lệnh hủy, nó sẽ hủy truy vấn hiện đang chạy (giống như SSMS thực hiện khi bạn nhấn nút dừng). Nó sẽ hủy bỏ lô (giống như trong SSMS). Điều này có nghĩa là không có mã bắt nào có thể chạy. Kết nối sẽ vẫn tồn tại.
Theo kinh nghiệm của tôi, giao dịch sẽ được khôi phục lại ngay lập tức. Tuy nhiên, tôi không nghĩ điều này được đảm bảo.
TL; DR:Thời gian chờ trong ADO.NET hoạt động giống như khi bạn nhấn dừng trong SSMS (hoặc được gọi là SqlCommand.Cancel
).
Đây là tài liệu tham khảo cho điều này: https://techcommunity.microsoft.com/t5/sql-server-support/how-it-works-attention-attention-or-should-i-say -cancel-the / ba-p / 315511