분산 쿼리를 위한 OLE DB 공급자 구성
SQL Server에서는 분산 쿼리를 관리하기 위한 고급 옵션을 몇 가지 제공합니다. 공급자 수준에서 관리되는 옵션도 있고 sp_serveroption을 사용하여 연결된 서버 수준에서 관리되는 옵션도 있습니다. 이러한 고급 옵션은 숙련된 시스템 관리자만 구성해야 합니다.
OLE DB 공급자 옵션
분산 쿼리를 관리하기 위한 OLE DB 공급자 옵션은 SQL Server Management Studio에서 설정할 수 있습니다. 개체 탐색기에서 공급자 이름을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 다음 표에서는 사용 가능한 공급자 옵션에 대해 설명합니다.
공급자 옵션 |
설명 |
---|---|
DynamicParameters |
0이 아니면 공급자에서 매개 변수가 있는 쿼리에 대해 '?' 매개 변수 표식 구문을 허용한다는 것을 나타냅니다. 이 옵션은 공급자가 ICommandWithParameters 인터페이스를 지원하고 '?'를 매개 변수 표식으로 지원하는 경우에만 설정합니다. 이 옵션을 설정하면 SQL Server에서 공급자에 대해 매개 변수가 있는 쿼리를 실행할 수 있습니다. 특정 쿼리의 경우 공급자에 대해 매개 변수가 있는 쿼리를 실행하면 성능이 향상될 수 있습니다. |
NestedQueries |
0이 아니면 공급자에서 FROM 절의 SELECT 중첩문을 허용한다는 것을 나타냅니다. 이 옵션을 설정하면 SQL Server에서 FROM 절의 SELECT 중첩문을 요청하는 공급자에게 일부 쿼리를 위임할 수 있습니다. |
LevelZeroOnly |
0이 아니면 공급자에 대해 수준 0 OLE DB 인터페이스만 호출됩니다. |
AllowInProcess |
0이 아니면 SQL Server에서 공급자가 in-process 서버로 인스턴스화될 수 있습니다. 이 옵션이 레지스트리에 설정되어 있지 않으면 기본 동작은 SQL Server 프로세스 외부에서 공급자를 인스턴스화합니다. SQL Server 프로세스 외부에서 공급자를 인스턴스화하면 공급자 오류로부터 SQL Server 프로세스를 보호할 수 있습니다. 공급자가 SQL Server 프로세스 외부에서 인스턴스화되면 LOB 열(varchar(max), nvarchar(max), varbinary(max), text, ntext 또는 image)을 참조하는 업데이트나 삽입은 허용되지 않습니다. SQL Server Native Client OLE DB 공급자는 Out-of-process 인스턴스화할 수 없습니다. SQL Server Native Client OLE DB 공급자가 Out-of-process 실행되도록 설정하고 분산 쿼리를 실행하려고 하면 오류가 발생합니다. |
NonTransactedUpdates |
0이 아니면 ITransactionLocal을 사용할 수 없어도 SQL Server에서 업데이트를 허용합니다. 이 옵션을 사용하면 공급자가 트랜잭션을 지원하지 않으므로 공급자에 대해 업데이트를 복구할 수 없습니다. |
IndexAsAccessPath |
0이 아니면 SQL Server에서 공급자 인덱스를 사용하여 데이터를 인출하려고 합니다. 기본적으로 인덱스는 메타데이터에만 사용되며 열리지 않습니다. |
DisallowAdhocAccess |
0이 아닌 값으로 설정하면 SQL Server에서 OLE DB 공급자에 대해 OPENROWSET 및 OPENDATASOURCE 함수를 통한 임의 액세스를 허용하지 않습니다. 이 옵션을 설정하지 않은 경우에도 SQL Server에서 임의 액세스가 허용되지 않습니다. 이 옵션은 관리자가 아닌 사용자가 임시 쿼리를 실행하는 능력을 제어합니다. 관리자는 이 옵션의 영향을 받지 않습니다. |
SqlServerLike |
0이 아니면 LIKE 연산자가 SQL Server에 구현된 경우 공급자는 이 연산자를 지원합니다. 이 옵션을 설정하면 SQL Server에서는 분산 쿼리에 대한 평가의 일부로 원격 열에 대해 LIKE 조건자가 있는 쿼리를 공급자로 밀어넣으려고 합니다. |
OLE DB 공급자 옵션은 공급자 수준에서 작동합니다. 옵션이 공급자에 대해 설정되어 있으면 이러한 설정은 같은 OLE DB 공급자를 사용하는 연결된 모든 서버 정의에 적용됩니다.
연결된 서버 옵션
앞에서 설명한 공급자 수준의 옵션 외에도 분산 쿼리의 관리에 관한 몇 가지 옵션은 sp_serveroption을 사용하여 연결된 서버 수준에서 사용할 수 있습니다. 서버 수준의 옵션은 공급자 수준의 옵션과 달리 지정되어 있는 연결된 서버에 대한 동작에만 영향을 미칩니다.
다음 표에서는 여러 가지 연결된 서버 옵션을 설명합니다.
연결된 서버 옵션 |
설명 |
---|---|
use remote collation |
true로 설정되어 있으면 SQL Server에서는 연결된 서버에서 문자 열의 데이터 정렬 정보를 사용합니다. 연결된 서버가 SQL Server의 인스턴스이면 데이터 정렬 정보가 SQL Server OLE DB 공급자 인터페이스에서 자동으로 파생됩니다. 연결된 서버가 SQL Server의 인스턴스가 아니면 SQL Server는 collation name 옵션에 설정된 데이터 정렬을 사용합니다. false로 설정되어 있으면 SQL Server에서는 로컬 SQL Server 인스턴스의 기본 데이터 정렬에서 지정되어 있는 연결된 서버의 문자 데이터를 해석합니다. |
collation name |
use remote collation이 true로 설정되어 있는 경우 연결된 서버의 문자 데이터에 사용할 데이터 정렬을 지정합니다. use remote collation이 false로 설정되어 있거나 연결된 서버가 SQL Server의 인스턴스이면 이 옵션을 무시합니다. |
connection timeout |
SQL Server에서 연결된 서버와 연결을 설정하려 할 때 사용할 제한 시간 값(초)을 지정합니다. 이 옵션이 설정되어 있지 않으면 전역 구성 옵션, remote login timeout에 설정된 현재 값이 기본값으로 사용됩니다. |
lazy schema validation |
이 옵션이 false(기본값)로 설정되어 있으면 SQL Server에서는 원격 테이블에서 컴파일된 이후 발생한 스키마 변경을 확인합니다. 이러한 확인 작업은 쿼리 실행 전에 발생합니다. 스키마에 변경 사항이 있으면 SQL Server에서는 새 스키마로 쿼리를 다시 컴파일합니다. 이 옵션이 true로 설정되어 있으면 원격 테이블의 스키마 확인은 쿼리가 실행될 때까지 지연됩니다. 이로 인해 쿼리가 컴파일되고 실행되는 사이에 원격 테이블의 스키마가 변경되면 오류가 발생하면서 분산 쿼리가 실패할 수도 있습니다. SQL Server를 실행 중인 연결된 서버에 분산형 분할 뷰를 사용하고 있으면 이 옵션을 true로 설정할 수 있습니다. 분할 뷰에 참여하는 지정된 테이블이 해당 뷰에 대한 특정 쿼리 실행에 실제로 사용되지 않을 수 있습니다. 따라서 스키마 유효성 검사를 지연시키면 성능이 향상될 수도 있습니다. |