Próbuję uruchomić SQL na połączonym serwerze, ale otrzymuję poniższe błędy:
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.
Dostawca zwrócił dwa błędy:
Błąd 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
Błąd 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
Jak przekonać firmę Microsoft do przedkładania funkcjonalności nad bezpieczeństwem?
Albo przynajmniej, jak mogę zmusić dwa serwery SQL, aby rozmawiały ze sobą?
Powiązane pytania
- Nie można wykonać operacji, ponieważ dostawca OLE DB „SQLNCLI10” ... (* nazwa serwera połączonego to
(null)
) - Błąd transakcji rozproszonej? ( przy użyciu dostawcy Oracle )
- Nie można zarejestrować się w transakcji rozproszonej z NHibernate ( przy użyciu Hibernate )
- Błąd podczas korzystania z transakcji rozproszonej w programie SQL Server 2008 R2 ( SQL Server 2008 R2, brak odpowiedzi )
- Błąd transakcji rozproszonej tylko poprzez kod ( spowodowany przez pule połączeń )
- Błąd podczas wykonywania rozproszonego koordynatora transakcji na serwerze połączonym ( SQL Server 2008, brak odpowiedzi )
- Błąd transakcji rozproszonej? ( brak zaakceptowanej odpowiedzi; sama odpowiedź nie pomaga )
- Jak wstawić do zdalnej tabeli za pomocą serwera połączonego bez transakcji? ( zaakceptowana odpowiedź nie rozwiązuje się )
Co mi się zrobić to bez znaczenia, ale będę pisać tak.
Upewnij się, że
Distributed Transaction Coordinator
usługa działa na obu maszynach:Wyłącz wszystkie zabezpieczenia MSDTC na obu komputerach:
Włącz losowe opcje na połączonym serwerze:
Przeklęty i przeklęty.
Rozwalone rzeczy.
Sprawdzono, czy
SELECT
może korzystać z serwera połączonego :SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
Sprawdzono, że serwer klienta może
ping
serwer zdalny :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
Sprawdzono, czy zdalny serwer może komunikować się z powrotem, po nazwie, z serwerem inicjującym:
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
Zaznaczone, że
@@SERVERNAME
pasuje do nazwy serwera na obu serwerach :SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
i
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
Krzyknęła
Wydane
SET XACT_ABORT ON
przed wysłaniem zapytania :SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
Przyznane
Everyone
Full Control
na :HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
na obu serwerach.