2010-05-28 11 views
3

인스턴트 저장 프로 시저를 실행하고 그 결과를 임시 테이블에 삽입하려고하면 다음 메시지가 나타납니다.링크 된 서버 SQLNCLI 문제점. "트랜잭션이 활성화되어 있지 않습니다"

OLE DB 공급자 "SQLNCLI "연결된 서버"MyServerName "이 분산 트랜잭션을 시작할 수 없습니다. 연결된 서버 "MyServerName"의 OLE DB 공급자 "SQLNCLI"에서 "트랜잭션이 활성화되지 않았습니다."라는 메시지가 반환되었습니다.

내 쿼리는 다음과 같습니다

INSERT INTO #TABLE 
EXEC MyServerName.MyDatabase.dbo.MyStoredProcedure Param1, Param2, Param3 

정확한 열 번호, 이름, 문제는 결과가 없습니다.

두 컴퓨터 모두에서 MSDTC가 허용되고 시작됩니다. 원격 프로 시저 호출도 마찬가지입니다.

컴퓨터가 동일한 도메인에 있지 않지만 내 컴퓨터에서 원격 쿼리를 실행하고 그 결과를 얻을 수 있습니다. 스토어드 프로 시저를 실행하고 결과를 볼 수도 있습니다. 다른 테이블에 삽입 할 수 없습니다.

도와주세요. :)


편집 아 내가 얘기를 깜빡 했네요, 저장 프로 시저가 트리거를 실행하지 않습니다. 데이터를 처리하기 위해 자체를 작성하는 임시 테이블에 레코드를 삽입하기 만합니다.

답변

3

음, 튜토리얼의 많은 다음 그것에 대해 많이 연구 한 후에, 나는 그것이 작동하는 데 필요한라고 생각하는 모든 구성을 변경했지만, 여전히하지 않았다.

오늘 우리는 개발 중단시 오류가 발생하여 강제로 재부팅해야했으며, 서버를 부팅했을 때 무엇을 추측 했습니까? 그것은 작동합니다!

레코드 용으로 일부 특정 MSDTC 구성을 변경하고 연결된 서버로 추가하고 RPC IN 및 OUT을 허용하고 RPC 구성을 'NO AUTHENTICATION REQUIRED'또는 이와 비슷한 것으로 변경했습니다.

이 구성을 변경 한 후 Windows가 이미 서비스를 다시 시작했다는 메시지가 표시 되더라도 다시 부팅해야한다는 내용을 읽었습니다.

변경 한 이래로 두 번 ... 내 서버를 재부팅했지만 여전히 작동하지 않았습니다. 그러나 오늘처럼, 완전한 전원을 껐다가 켜면 작동합니다!

구문에 대해서는 동일하게 유지했습니다.

-2

오픈 쿼리를 사용해 보셨습니까?

insert into table select * from openquery(myservername, 'exec mydatabase.dbo.mystoredproc param1, param2, param3') 
+0

: 은 (http://msdn.microsoft.com/en-us/library/ms188427(SQL.90).aspx) SQL Server 2000 및 이후 버전에서 , OPENQUERY를 실행하는 데 사용할 수 없습니다 연결된 서버에서 확장 저장 프로 시저 그러나 확장 된 저장 프로 시저를 네 부분으로 된 이름을 사용하여 연결된 서버에서 실행할 수 있습니다. 예 : EXEC SeattleSales.master.dbo.xp_msver – Smur

+0

원본 포스터는 확장 저장 프로 시저 또는 일반 저장 프로 시저가 아닙니다. – thomas

1

또한 IP 네트워크 구성에서 DNS 이름 확인을 확인해야합니다.

예를 들어, server-a.mydomain.com이라는 서버와 server-b.otherdomain.com이라는 서버가 있고 server-a에 로그인 한 다음 도메인이없는 "ping server-b"를 수행하십시오).

"Ping 요청에서 호스트 서버를 찾을 수 없습니다 .b. 이름을 확인한 후 다시 시도하십시오." 그게 문제 야.

제어 패널> 네트워크 연결> 네트워크 카드> 속성> 인터넷 프로토콜> 속성> 고급> DNS>이 DNS 접미사 추가 순서를 마우스 오른쪽 단추로 클릭하십시오. 그리고 여기에 로컬 도메인 추가 : mydomain.com을 한 다음 원격 도메인 추가 :

: 당신은 "핑 서버-b는"이 같은 것을는 repond해야 할 경우 지금

을 종료 할 때까지 otherdomain.com 확인을 클릭

핑 server-b.otherdomain.com [192.168.1.2] 32 데이터 바이트 : 192.168.1.2로부터 응답 : 바이트 = 32 시간 = 12ms TTL = 64 192.168.1.2로부터 응답 : 바이트 = 32 시간 = 9ms TTL = 64

이제 distr을 다시 실행 해보십시오. 유흥 거래. MSDN 문서에서