Các lớp của API truy cập dữ liệu như ODBC, OLE-DB và SqlClient gọi thủ tục được lưu trữ (nội bộ) sp_reset_connection khi sử dụng lại kết nối từ nhóm kết nối. Nó thực hiện việc này để đặt lại trạng thái của kết nối trước khi nó được sử dụng lại.
Có vẻ như không có tài liệu chính thức về những gì mọi thứ được đặt lại, nhưng đây là danh sách không chính thức.
sp_reset_connection đặt lại các khía cạnh sau của kết nối:
- Nó đặt lại tất cả các trạng thái và số lỗi (như @@ error)
- Nó dừng tất cả các EC (ngữ cảnh thực thi) là các chuỗi con của EC gốc đang thực hiện một truy vấn song song
- Nó sẽ đợi bất kỳ hoạt động I / O nào còn tồn đọng
- Nó sẽ giải phóng mọi vùng đệm bị giữ trên máy chủ bằng kết nối
- Nó sẽ mở khóa mọi tài nguyên bộ đệm được kết nối sử dụng
- Nó sẽ giải phóng tất cả bộ nhớ được cấp phát thuộc sở hữu của kết nối
- Nó sẽ xóa mọi công việc hoặc bảng tạm thời được tạo bởi kết nối
- Nó sẽ loại bỏ tất cả các con trỏ chung do kết nối sở hữu
- Nó sẽ đóng mọi trình điều khiển SQL-XML đang mở
- Nó sẽ xóa mọi bảng công việc liên quan đến SQL-XML đang mở
- Nó sẽ đóng tất cả các bảng hệ thống
- Nó sẽ đóng tất cả các bảng người dùng
- Nó sẽ thả tất cả các đối tượng tạm thời
- Nó sẽ hủy bỏ các giao dịch đang mở
- Nó sẽ bị loại khỏi giao dịch phân tán khi được gia nhập
- Nó sẽ giảm số lượng tham chiếu cho người dùng trong cơ sở dữ liệu hiện tại; giải phóng khóa cơ sở dữ liệu được chia sẻ
- Nó sẽ miễn phí các ổ khóa có được
- Nó sẽ giải phóng bất kỳ tay cầm nào có thể đã được mua
- Nó sẽ đặt lại tất cả các tùy chọn SET về giá trị mặc định
- Nó sẽ đặt lại giá trị @@ rowcount
- Nó sẽ đặt lại giá trị nhận dạng @@
- Nó sẽ đặt lại bất kỳ tùy chọn theo dõi mức phiên nào bằng cách sử dụng dbcc traceon ()
sp_reset_connection sẽ KHÔNG đặt lại:
- Bối cảnh bảo mật, đó là lý do tại sao tổng hợp kết nối khớp với các kết nối dựa trên chuỗi kết nối chính xác
- Nếu bạn đã nhập vai trò ứng dụng bằng sp_setapprole, vì không thể hoàn nguyên các vai trò ứng dụng
- Mức độ cô lập của giao dịch