Triệu chứng
Khi phân phối truy vấn tham gia nhiều bảng và được lưu trữ bằng các phiên bản từ xa của Microsoft SQL Server được thực hiện trong khi cài đặt phiên XACT_ABORT ON, bạn có thể gặp phải một trong những lỗi sau:
TB 3989, mức 16, trạng thái 1, dòng #
Yêu cầu mới không bắt đầu vì nó sẽ đi kèm với mô tả giá trị giao dịch.
TB 3988, mức 16, trạng thái 1, dòng #
Mới giao dịch không được vì có các chủ đề chạy trong phiên
Nguyên nhân
Có một số hạn chế thiết kế trong các cách SQL Server xử lý phân phối truy vấn (DQs) khi các điều kiện sau là đúng:
-
SQL Server kết nối với nhiều bảng một nguồn dữ liệu SQL Server từ xa.
-
Phiên làm việc đã phát hành truy vấn không tham gia vào một giao dịch phân tán.
Trong trường hợp này, cố gắng chạy truy vấn có thể tăng một trong hai lỗi được đề cập trong phần "Triệu chứng".
Giải pháp
Để khắc phục sự cố này, kèm theo phân phối truy vấn trong câu lệnh "bắt đầu giao dịch phân tán":BEGIN DISTRIBUTED TRANSACTION <Distributed Query> COMMIT TRANSACTION