2014-04-25 3 views
0

다음 쿼리를 사용하기 위해 BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)을 구현하고 싶습니다.BEGIN DISTRIBUTED TRANSACTION (Transact-SQL)

USE LOXF; 
GO 
BEGIN DISTRIBUTED TRANSACTION; 
-- Delete candidate from local instance. 
DELETE DatatbaseName.dbo.TBLUSERPROFILE 
    WHERE USERINDEX = 13; 
-- Delete candidate from remote instance. 
DELETE RemoteServer.DatatbaseName.dbo.TBLUSERPROFILE 
    WHERE USERINDEX = 13; 
COMMIT TRANSACTION; 
GO 

하지만 난 쿼리 위에 실행할 때 오류 "sys.servers에서 서버 'RemoteServer는'을 (를) 찾을 수 없습니다라고. 확인하는 것은 올바른 서버 이름이 지정되었다., 저장 프로 시저 sp_addlinkedserver를 실행 필요한 경우를 추가 할 수있어 server to sys.servers ". 그래서 내가 잘못 생각한 부분을 알려주십시오.

+0

'RemoteServer'에 연결된 서버를 만들지 않았습니까? – dean

+0

어떻게 링크 된 서버를 만들 수 있습니까? 도와주세요 – user1722447

+0

또한 위 쿼리에서 RemoteServer는 서버 인스턴스 또는 예약 키워드입니다. – user1722447

답변

2

쿼리를 실행하기 전에 연결된 서버를 만들어야합니다.

이것은, 또는 GUI와 (오류 메시지에 명시된 바와 같이) sp_addlinkedserver 저장 프로 시저와 함께 할 수

:

시작 SSMS; 개체 탐색기의 서버 아래에서 서버 개체, 연결된 서버를 찾은 다음 컨텍스트 메뉴에서 새 연결된 서버를 선택합니다.

원격 서버가 SQL Server 인 경우에도 서버 이름을 입력하면됩니다. 보안을 설정해야 할 수도 있습니다. 두 서버 모두에서 Windows 인증을 사용하고 있고 일반적으로 원격 서버 자체에 액세스 할 수 있다면 "로그인의 현재 보안 컨텍스트를 사용하여 설정"라디오 버튼을 선택하면됩니다.

+0

BEGIN DISTRIBUTED TRANSACTION (Transact-SQL) Two Phase Commit과 동일합니다. – user1722447

관련 문제