2013-09-06 2 views
6

Ich versuche, eine gespeicherte Prozedur in SQL Server 2008 aufzurufen und die abgerufenen Daten in einer lokalen temporären Tabelle zu speichern.OLe DB-Anbieter "SQLNCLI" für Verbindungsserver konnte eine verteilte Transaktion nicht starten

Wenn ich versuche, um es auszuführen, erhalte ich folgende Fehlermeldung:

The operation could not be completed because OLe DB provider "SQLNCLI" for linked server was unable to begin a distributed transaction

Mein Code ist wie folgt:

create table #temp(
    col1 as int, 
    col2 as varchar(50) 
) 

insert into #temp 
exec [192.168.0.9].[db1].[dbo].[tablename] @usr_id=3 

Antwort

3

Verbindungsserver keine verteilte Transaktion Fehler sind beginnen, weil der Probleme in MSDTC (MS verteilte Transaktionskoordinator). Probleme können sich aus einer Reihe von Problemen ergeben. Einschließlich MSDTC wird nicht ausgeführt, durch die Firewall blockiert und andere.

Wenn Sie Transaktionen benötigen, müssen Sie das Problem ziemlich selbst debuggen, da es umweltfreundlich ist. Wenn Sie umschreiben können, um eine Transaktion zu vermeiden, wird Ihr Leben einfacher. Um sicherzustellen, dass es sich um ein MSDTC-Problem handelt, schreiben Sie eine einfache Abfrage, die nicht von MSDTC abhängt. z.B.

create table #temp(col1 as int, col2 as varchar(50)) 

insert into #temp 
select col1, col2 from [192.168.0.9].[db1].[dbo].[tablename] where usr_id=3 

Wenn dies funktioniert, sein definitiv MSDTC (und vielleicht eine vermeidbare Problem)

- Hinzugefügt dies. Ich habe ein wenig nach MSDTC-Debugging gesucht. http://www.sqlwebpedia.com/content/msdtc-troubleshooting war ziemlich gut, wie war http://www.mssqltips.com/sqlservertip/2083/troubleshooting-sql-server-distributed-transactions-part-1-of-2/ zusammen sie decken fast alles, was ich erinnern kann, Debugging für MSDTC Probleme (und einige andere auch).

7

Sie können mit verteilten Transaktionen für den Verbindungsserver verhindern, indem Serveroption ‚remote proc Transaktion Förderung‘ auf ‚false‘ setzen:

EXEC sp_serveroption 'servername', 'remote proc transaction promotion', 'false' 

Here's the same issue

+0

Dieser arbeitete für mich! Danke für die Verknüpfung mit der anderen Antwort. War neugierig, was der Nachteil bei der Festlegung des Attributs war. Ich denke, solange ich NICHT Daten auf meinen lokalen und verbundenen Servern ändere und dann später alle diese Transaktionen rückgängig machen muss, dann sollte ich gut sein. – MikeTeeVee

+0

Lebensretter !! ....... –

Verwandte Themen