Tôi đã thử gần một tuần để phân phối các giao dịch được phân phối. Tôi đã có một số thủ tục trên MSSQL mà cố gắng chọn dữ liệu từ MySQL. Nhu cầu của tôi là làm điều này trong một giao dịch (!). Tại thời điểm tôi đã thiết lập kết nối ODBC trên MSSQL với trình điều khiển MySQL một tầng từ OpenLink, nó cho biết rằng các giao dịch XA hoạt động thành công (có một nút kiểm tra được tích hợp sau khi cấu hình kết nối ODBC). Sau đó, tôi đã thiết lập một máy chủ được liên kết trong MSSQL qua MSDASQL để kết nối ODBC này, nhưng khi thực hiệnCác giao dịch phân tán giữa MySQL và MSSQL
begin distributed transaction
select * from optin..lu_source_proc
select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc')
commit transaction
tôi nhận được lỗi này, mà không có giao dịch hơn nữa có thể được bắt đầu bên trong giao dịch thực tế. (Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "Es können keine weiteren Transaktionen in dieser Sitzung gestartet werden." zurückgeben.
)
Một thử nghiệm:
set transaction isolation level serializable
begin transaction
select * from optin..lu_source_proc
select * from openquery(optinxa, 'SELECT * FROM tbl_source_proc')
commit transaction
Kết quả trong Der OLE DB-Anbieter "MSDASQL" für den Verbindungsserver "optinxa" hat die Meldung "[OpenLink][ODBC][Driver]Driver does not support this function" zurückgeben.
Nhưng tại sao Kỳ trình điều khiển ODBC trên cấu hình, mà giao dịch XA làm việc?
Bạn có tìm cách giải quyết vấn đề này không? Tôi có một vấn đề trong câu hỏi này http://stackoverflow.com/questions/30911206/distributed-transaction-on-linked-server-between-sql-server-and-mysql – ughai
Không, tôi chưa bao giờ làm việc này. – rabudde