2016-03-01 57 views
5

Tôi là người mới bắt đầu với .net. Tôi gặp sự cố với lỗi sauEnlist = false có nghĩa là gì trong chuỗi kết nối cho máy chủ sql?

"Không thể thực hiện thao tác giao dịch vì có yêu cầu đang chờ xử lý giao dịch này".

tôi đọc ở đâu đó trong blog .i đã nối chuỗi kết nối của tôi với enlist=true và sự cố đã được giải quyết.

Lưu ý: tôi đang nâng cấp DB từ máy chủ sql 2005 lên máy chủ sql 2008R2.

Hãy giúp hiểu tầm quan trọng của việc sử dụng tranh thủ.

Trả lời

7

tranh thủ là người dùng cho Distributed Transaction

Đối tượng kết nối sẽ tự động nhập ngũ trong một giao dịch phân phối hiện tại nếu nó xác định rằng một giao dịch đang hoạt động. Tự động hóa giao dịch tự động xảy ra khi kết nối được mở hoặc được truy xuất từ ​​nhóm kết nối. Bạn có thể tắt tự động enlistment trong các giao dịch hiện có bằng cách chỉ định Enlist=false làm kết nối tham số chuỗi cho SqlConnection hoặc OLE DB Services = -7 làm tham số chuỗi kết nối cho OleDbConnection.

Note Các kết nối phải open trước khi gọi EnlistDistributedTransaction.

Dưới đây là một ví dụ cho bạn với Enlist=False;

2

Các MSDN nói:

Thuộc tính ConnectionString hỗ trợ một từ khóa, Tranh thủ, mà cho biết System.Data.SqlClient sẽ phát hiện giao dịch bối cảnh và tự động tranh thủ kết nối trong giao dịch được phân phối . Nếu Enlist = true, kết nối sẽ tự động được nhập vào trong bối cảnh giao dịch hiện tại của luồng mở. Nếu Enlist = false, kết nối SqlClient không tương tác với giao dịch được phân phối . Giá trị mặc định cho Enlist là đúng. Nếu Enlist không phải là được chỉ định trong chuỗi kết nối, kết nối sẽ tự động được nhập ngũ trong một giao dịch phân phối nếu được phát hiện khi kết nối được mở.

Các vấn đề liên quan