클러스터형 SQL Server의 연결된 서버 고려 사항

클러스터형 SQL Server에서 SQL Server에 제공되지 않은 OLE DB 공급자에 대해 연결된 서버를 구성한 경우 해당 OLE DB 공급자가 클러스터의 모든 노드에 설치되어 있는지 확인하십시오. 또한 연결된 서버를 정의하는 모든 속성은 투명한 위치에 있어야 합니다. 즉, 이 속성에는 SQL Server가 항상 클러스터의 주어진 노드에서 실행됨을 가정하는 정보가 포함되면 안 됩니다.

다음 예에서는 SQL Server를 실행하는 서버에 대해 연결된 서버를 정의하고 SELECT 문에서 네 부분으로 된 이름을 사용하여 원격 테이블 중 하나를 참조합니다. SQLNCLI를 사용하면 SQL Server가 최신 버전의 SQL Server Native Client OLE DB 공급자로 리디렉션됩니다.

sp_addlinkedserver @server = N'LinkServer',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'ServerNetName', 
    @catalog = N'AdventureWorks2008R2'
GO
SELECT *
FROM LinkServer.AdventureWorks2008R2.HumanResources.Employee
GO

루프백 연결된 서버

연결된 서버는 이 서버가 정의된 서버의 포인트 백(루프백)에 정의될 수 있습니다. 단일 서버 네트워크에서 분산 쿼리를 사용하는 응용 프로그램을 테스트할 때 루프백 서버를 유용하게 사용할 수 있습니다.

예를 들어 MyServer라는 서버에 다음과 같은 sp_addlinkedserver 저장 프로시저를 실행하면 루프백 연결된 서버가 정의됩니다.

sp_addlinkedserver @server = N'MyLink',
    @srvproduct = N' ',
    @provider = N'SQLNCLI', 
    @datasrc = N'MyServer', 
    @catalog = N'AdventureWorks2008R2'
GO

서버 이름으로 MyLink를 사용하는 Transact-SQL 문은 SQLNCLI 공급자를 통해 루프된 후 로컬 서버로 돌아갑니다.

분산 트랜잭션에서는 루프백 연결된 서버를 사용할 수 없습니다. 분산 트랜잭션 내의 루프백 연결된 서버에 분산 쿼리를 실행하려고 하면 오류 3910과 같은 오류가 발생합니다. "[Microsoft][ODBC SQL Server Driver][SQL Server]다른 세션에서 트랜잭션 컨텍스트를 사용 중입니다." 이 제한 사항은 MARS(Multiple Active Result Set)가 설정되지 않은 연결에 의해 실행된 INSERT...EXECUTE 문이 루프백 연결된 서버에 대해 실행되는 경우에는 적용되지 않습니다. 이 제한 사항은 연결에 대해 MARS가 설정된 경우에는 계속 적용됩니다.