SQL'i bağlantılı bir sunucuya karşı çalıştırmaya çalışıyorum, ancak aşağıdaki hataları alıyorum:
BEGIN DISTRIBUTED TRANSACTION
SELECT TOP 1 * FROM Sessions
OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
Sağlayıcı tarafından döndürülen iki hata var:
Hata 1:
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
HelpFile:
HelpContext: $00000000
SQLState: 01000
NativeError: 7412
Hata 2
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
HelpFile:
HelpContext: $00000000
SQLState: 42000
NativeError: 7391
Microsoft'un güvenlik yerine işlevselliği tercih etmesini nasıl sağlayabilirim?
Ya da en azından iki SQL Server'ın birbiriyle konuşmasını nasıl sağlayabilirim?
İlgili sorular
- OLE DB sağlayıcısı “SQLNCLI10” ... (* bağlantılı sunucu adı
(null)
) olduğundan işlem gerçekleştirilemedi - Dağıtılmış işlem hatası? ( Oracle sağlayıcısını kullanarak )
- NHibernate ile dağıtılmış bir işleme dahil edilemiyor ( Hazırda Bekletme kullanılarak )
- SQL Server 2008 R2'de dağıtılmış işlem kullanılırken hata ( SQL Server 2008 R2, yanıt yok )
- Yalnızca Kod Aracılığıyla Dağıtılmış İşlem Hatası ( bağlantı havuzlamasından kaynaklanır )
- Bağlı sunucuda dağıtılmış işlem koordinatörü gerçekleştirilirken hata ( SQL Server 2008, yanıt yok )
- Dağıtılmış işlem hatası? ( kabul edilen cevap yok; sadece cevap yardımcı olmuyor )
- İşlemle Bağlantılı sunucu kullanarak uzak tabloya nasıl eklenir? ( kabul edilen cevap çözülmez )
Ne var bitmiş alakasız, ama yine de göndeririz.
Distributed Transaction Coordinator
Servisin her iki makinede de çalıştığından emin olun :Her iki makinede de tüm MSDTC güvenliğini devre dışı bırakın:
Bağlı sunucuda rastgele seçenekleri açın:
Lanetli ve yeminli.
Parçalanmış şeyler.
A'nın bağlantılı sunucuyu
SELECT
kullanıp kullanamayacağı kontrol edildi :SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
İstemci sunucusunun
ping
uzak sunucuyu yapıp yapamayacağı kontrol edildi :C:\Documents and Settings\avatar>ping asicmstest.contoso.com Pinging asicmstest.contoso.com [10.0.0.40] with 32 bytes of data: Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.40: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
Uzak sunucunun başlatan sunucuya adla geri iletişim kurabildiği kontrol edildi:
C:\Documents and Settings\avatar>ping asitestserver.contoso.com Pinging asitestserver.contoso.com [10.0.0.22] with 32 bytes of data: Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.22: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
O İşaretli
@@SERVERNAME
her iki sunucuda sunucu adı ile eşleşen :SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
ve
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
Çığlık attı
Sorgumu
SET XACT_ABORT ON
yayınlamadan önce verildi :SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
Verilen
Everyone
Full Control
için :HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
her iki sunucuda da.