2013-09-06 12 views
6

Próbuję wywołać procedurę przechowywaną w programie SQL Server 2008 i zapisać pobrane dane do lokalnej tabeli tymczasowej.Dostawca danych OLe DB "SQLNCLI" dla połączonego serwera nie mógł rozpocząć transakcji rozproszonej

Kiedy próbuję go uruchomić, pojawia się następujący błąd:

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

Mój kod wygląda następująco:

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

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

Odpowiedz

3

serwer połączony był w stanie rozpocząć transakcji rozproszonej błędy z powodu problemy w MSDTC (koordynator transakcji rozproszonych MS). Problemy mogą wynikać z wielu problemów. W tym MSDTC nie działa, jest blokowany przez zaporę ogniową i inne.

Jeśli potrzebujesz transakcji, musisz samodzielnie rozwiązać problem, ponieważ jest to środowisko. Jeśli możesz przepisać, aby uniknąć potrzeby transakcji, twoje życie będzie prostsze. Aby upewnić się, że jest to problem z MSDTC, napisz proste zapytanie, które nie będzie zależało od MSDTC. na przykład

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 

Jeśli to działa, jego zdecydowanie MSDTC (i być może uniknąć problemu)

- Dodano tego. Spędziłem trochę czasu szukając debugowania MSDTC. http://www.sqlwebpedia.com/content/msdtc-troubleshooting było całkiem niezłe, tak jak było http://www.mssqltips.com/sqlservertip/2083/troubleshooting-sql-server-distributed-transactions-part-1-of-2/, po to, aby pokryć praktycznie każdą rzecz, którą pamiętam mając do debugowania dla problemów z MSDTC (i niektórych innych).

7

można zapobiec stosując transakcji rozproszonych dla serwera połączonego poprzez ustawienie opcji serwera zdalnego proc promocji transakcji 'na „false”:

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

Here's the same issue

+0

Ten pracował dla mnie! Dziękuję za połączenie z drugą odpowiedzią. Był ciekawy, co było wadą ustawienia atrybutu. Myślę, że dopóki NIE zmieniam danych zarówno na moich lokalnych, jak i połączonych serwerach, a potem będę musiał wycofać wszystkie te transakcje, powinienem być dobry. – MikeTeeVee

+0

Lifesaver !! ....... –

Powiązane problemy