Ich versuche, SQL auf einem Verbindungsserver auszuführen, erhalte jedoch die folgenden Fehler:
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.
Der Anbieter gibt zwei Fehler zurück:
Fehler Nr. 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
Fehler Nr. 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
Wie kann ich Microsoft dazu bringen, Funktionalität gegenüber Sicherheit zu bevorzugen?
Oder zumindest, wie kann ich zwei SQL Server dazu bringen, miteinander zu sprechen?
Verwandte Fragen
- Der Vorgang konnte nicht ausgeführt werden, da der OLE DB-Anbieter "SQLNCLI10" ... (* Name des Verbindungsservers lautet
(null)
) - Verteilter Transaktionsfehler? ( mit Oracle-Anbieter )
- An einer verteilten Transaktion mit NHibernate kann nicht teilnehmen ( mithilfe von Hibernate ).
- Fehler beim Verwenden der verteilten Transaktion in SQL Server 2008 R2 ( SQL Server 2008 R2, keine Antwort )
- Verteilter Transaktionsfehler nur über Code ( verursacht durch Verbindungspooling )
- Fehler beim Ausführen des verteilten Transaktionskoordinators auf dem Verbindungsserver ( SQL Server 2008, keine Antwort )
- Verteilter Transaktionsfehler? ( keine akzeptierte Antwort; nur Antwort hilft nicht )
- Wie kann ich mit einem Verbindungsserver ohne Transaktion in eine entfernte Tabelle einfügen? ( akzeptierte Antwort löst sich nicht auf )
Was ich habe getan , ist irrelevant, aber ich werde es trotzdem posten.
Stellen Sie sicher, dass der
Distributed Transaction Coordinator
Dienst auf beiden Maschinen ausgeführt wird:Deaktivieren Sie die gesamte MSDTC-Sicherheit auf beiden Computern:
Aktivieren Sie zufällige Optionen auf dem Verbindungsserver:
Verflucht und fluchte.
Zerschlagene Sachen.
Überprüft, ob a
SELECT
den Verbindungsserver verwenden kann :SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
Überprüft, ob der Client-Server
ping
den Remote-Server kann :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
Überprüft, ob der Remote-Server namentlich zum initiierenden Server zurückkehren kann:
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
Überprüft, ob
@@SERVERNAME
der Servername auf beiden Servern übereinstimmt :SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
und
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
Schrie
Ausgestellt
SET XACT_ABORT ON
vor meiner Anfrage Ausgabe :SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
Zugegeben
Everyone
Full Control
an :HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
auf beiden Servern.