분산 쿼리 아키텍처
Microsoft SQL Server 2005 는 Transact-SQL 문에서 다른 유형의 OLE DB 데이터 원본을 참조하는 두 가지 메서드를 지원합니다.
연결된 서버 이름
시스템 저장 프로시저 sp_addlinkedserver 및 sp_addlinkedsrvlogin은 OLE DB 데이터 원본에 서버 이름을 제공하는 데 사용됩니다. Transact-SQL 문에서는 4부분으로 된 이름을 사용하여 이러한 연결 서버의 개체를 참조할 수 있습니다. 예를 들어 연결된 서버 이름 DeptSQLSrvr이 SQL Server 2005 의 다른 인스턴스에 대해 정의되는 경우 다음 문은 해당 서버의 테이블을 참조합니다.SELECT Title, HireDate FROM DeptSQLSrvr.AdventureWorks.HumanResources.Employee
또한 연결된 서버 이름은 OLE DB 데이터 원본에서 행 집합을 열도록 OPENQUERY 문에 지정될 수 있습니다. 그런 다음 이 행 집합은 Transact-SQL 문의 테이블처럼 참조될 수 있습니다.
임의 커넥터 이름
데이터 원본이 자주 참조되지 않는 경우 연결된 서버에 연결하는 데 필요한 정보로 OPENROWSET 또는 OPENDATASOURCE 함수가 지정됩니다. 그런 다음 행 집합은 테이블이 Transact-SQL 문에서 참조되는 방법과 동일하게 참조될 수 있습니다.SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\Northwind.mdb';'Admin';''; Employees)
SQL Server 는 OLE DB를 사용하여 관계형 엔진과 저장소 엔진 간에 통신합니다. 관계형 엔진은 각 Transact-SQL 문을 기본 테이블의 저장소 엔진에서 연 단순 OLE DB 행 집합에 대한 일련의 작업으로 분류합니다. 이것은 관계형 엔진도 OLE DB 데이터 원본의 단순 OLE DB 행 집합을 열 수 있음을 의미합니다.
관계형 엔진은 OLE DB API(응용 프로그래밍 인터페이스)를 사용하여 연결된 서버에서 행 집합을 열고, 그 행을 인출하고, 트랜잭션을 관리합니다.
연결된 서버로 액세스되는 각 OLE DB 데이터 원본에 대해 OLE DB 공급자는 SQL Server 를 실행 중인 서버에 있어야 합니다. 특정 OLE DB 데이터 원본에 대해 사용할 수 있는 Transact-SQL 연산 집합은 OLE DB 공급자의 기능에 따라 다릅니다. 자세한 내용은 분산 쿼리를 위한 OLE DB 공급자 참조를 참조하십시오.
SQL Server 2005 의 인스턴스마다 sysadmin 고정 서버 역할의 멤버는 SQL Server DisallowAdhocAccess 속성을 사용하여 OLE DB 공급자에 대한 임의 커넥터 이름의 사용을 설정 또는 해제할 수 있습니다. 임의 액세스가 활성화되어 있는 경우 해당 인스턴스에 로그온된 모든 사용자는 OLE DB 공급자를 사용하여 액세스할 수 있는 네트워크에서 데이터 원본을 참조하며 임의 커넥터 이름이 있는 SQL 문을 실행할 수 있습니다. 데이터 원본에 대한 액세스를 제어하기 위해 sysadmin 역할의 멤버는 해당 OLE DB 공급자에 대한 임의 액세스를 비활성화하고 그에 따라 사용자를 관리자가 정의한 연결된 서버 이름에서 참조한 데이터 원본으로만 제한합니다. 기본적으로 임의 액세스는 SQL Server OLE DB 공급자에 대해 활성화되어 있고 기타 모든 OLE DB 공급자에 대해서는 비활성화되어 있습니다.
분산 쿼리를 사용하면 사용자는 SQL Server 서비스가 실행 중인 Microsoft Windows 계정의 보안 컨텍스트를 사용하여 다른 데이터 원본(예: 파일, Active Directory 같은 비관계형 데이터 원본 등)에 액세스할 수 있습니다. SQL Server 2005 에서는 Windows 로그인에 대해서는 적절하게 로그인을 가장하지만 SQL Server 로그인에는 가능하지 않습니다. 이렇게 하면 사용 권한이 없는 다른 데이터 원본에 대한 액세스를 분산 쿼리 사용자에게 허용할 수 있지만 SQL Server 서비스가 실행 중인 계정에는 사용 권한이 없습니다. sp_addlinkedsrvlogin을 사용하여 연결된 해당 서버에 액세스할 권한이 부여된 특정 로그인을 정의할 수 있습니다. 이 제어는 임의 이름에 대해 사용할 수 없으므로 임의 액세스에 대해 OLE DB 공급자를 활성화할 경우 조심해야 합니다.
가능한 경우 SQL Server 는 조인, 제한, 프로젝션, 정렬 및 Group by 연산 같은 관계형 연산을 OLE DB 데이터 원본에 밀어 넣습니다. SQL Server 는 기본적으로 SQL Server 로 기본 테이블을 검색하고 관계형 연산을 직접 수행하지는 않습니다. SQL Server 는 OLE DB 공급자를 쿼리하여 지원하는 SQL 문법의 수준을 확인하고 그 정보에 기반하여 공급자에 가능한 많은 관계형 연산을 밀어 넣습니다. 자세한 내용은 OLE DB 공급자를 위한 SQL 언어 요구 사항을 참조하십시오.
SQL Server 2005 는 OLE DB 공급자가 OLE DB 데이터 원본에서 키 값이 배포되는 방식을 나타내는 통계를 반환하기 위한 메커니즘을 지정합니다. 이렇게 하면 SQL Server 쿼리 최적화 프로그램은 각 SQL 문의 요구 사항에 대해 데이터 원본의 데이터의 패턴을 좀 더 잘 분석하므로 최적의 실행 계획을 생성하는 쿼리 최적화 프로그램의 기능을 향상시킬 수 있습니다. 자세한 내용은 OLE DB 공급자를 위한 배포 통계 요구 사항을 참조하십시오.