분산 쿼리 사용에 대한 지침

공급자가 필수 OLE DB 인터페이스를 지원하면 이 항목에서 설명하는 각 Transact-SQL 문 클래스도 허용됩니다.

Transact-SQL 문

다음은 연결된 서버 기반 이름 또는 임시 이름을 통해 액세스할 수 있는 원격 테이블에서 허용되는 Transact-SQL 언어의 하위 집합 목록입니다.

  • SELECT select_list FROM 절 WHERE 절과 같은 표준 형식을 사용하는 모든 쿼리가 허용됩니다. new_table_name이 원격 테이블을 참조하는 경우에는 SELECT의 INTO new_table_name 절을 사용할 수 없습니다.

  • SELECT, INSERT, UPDATE 및 DELETE 문에서는 원격 테이블의 열에 단일 부분으로 된 테이블 이름 또는 네 부분으로 된 테이블 이름을 사용할 수 없습니다. 원격 테이블의 경우 FROM 절에 별칭을 지정해야 하고 열 이름을 지정하는 데 별칭 이름을 사용해야 합니다.

  • 쿼리가 테이블에서 xml 이외의 열에 액세스하더라도 xml 열이 있는 테이블은 쿼리할 수 없습니다.

  • 원격 테이블의 LOB(Large Object) 열을 SELECT 문의 select_list에 항목으로 지정하는 경우 SELECT 문에 ORDER BY 절을 포함할 수 없습니다.

  • IS NULL 및 IS NOT NULL 조건자는 원격 테이블의 LOB 열을 참조할 수 없습니다.

  • 쿼리에도 WHERE 절이 있을 때는 분산 쿼리에 GROUP BY ALL을 사용할 수 없습니다. ALL을 지정하지 않고 GROUP BY를 사용하는 것은 허용됩니다.

  • 공급자가 INSERT 문에 대한 OLE DB 요구 사항을 충족할 경우에 한해 원격 테이블에 대해 INSERT 문을 사용할 수 있습니다. 자세한 내용은 OLE DB 공급자를 위한 INSERT 요구 사항을 참조하십시오.

  • NULL 상수는 분산 쿼리를 통해 timestamp 열에 삽입할 수 없습니다.

  • $IDENTITY 및 $ROWGUIDCOL은 분산 쿼리에 지원되지 않습니다. 명시적 값은 원격 테이블의 ID 열에 삽입할 수 없습니다.

  • 공급자가 지정된 테이블에 대한 OLE DB 인터페이스 요구 사항을 충족하면 원격 테이블에 대해 UPDATE 및 DELETE 문을 사용할 수 있습니다. 자세한 내용은 OLE DB 공급자를 위한 UPDATE 및 DELETE 요구 사항을 참조하십시오.

  • 공급자가 원격 테이블에 대한 업데이트 가능성 조건을 충족하는 경우 UPDATE 또는 DELETE 문(UPDATE 또는 DELETE remote_table WHERE CURRENT OF cursor_name)에 원격 테이블을 지정하면 분산 쿼리에 정의된 커서를 통해 원격 테이블을 업데이트하거나 삭제할 수 있습니다. 자세한 내용은 분산 쿼리에서 커서 사용을 참조하십시오.

  • READTEXT, WRITETEXT 및 UPDATETEXT 문은 원격 테이블에 대해 지원되지 않습니다.

  • 공급자가 SQL Server 프로세스 외부에서 인스턴스화되고 공급자 옵션 AllowInProcess가 0인 경우 LOB(Large Object) 데이터 형식(예: text, ntext 또는 image)을 포함하는 열은 업데이트 또는 삽입 작업에서 참조할 수 없습니다. 자세한 내용은 분산 쿼리를 위한 OLE DB 공급자 구성을 참조하십시오.

  • CREATE, ALTER 또는 DROP 문과 같은 데이터 정의 언어 문은 연결된 서버에 대해 사용할 수 없습니다.

  • EXECUTE 문을 사용하면 AT 키워드를 통해 연결된 서버로 통과 명령을 보낼 수 있습니다. 문의 실행 여부는 연결된 서버의 RPC 구성과 연결된 서버에서 문 실행을 우선적으로 처리할 수 있는지 여부에 따라 결정됩니다.

  • 다른 데이터베이스 수준의 작업이나 문은 연결된 서버에서 사용할 수 없습니다.

기타 지침

다음은 몇 가지 추가 제한 사항과 지침입니다.

  • STATIC 또는 INSENSITIVE 커서는 원격 테이블을 참조할 수 있습니다. OLE DB 공급자가 특정 요구 사항을 충족하면 KEYSET 커서가 원격 테이블을 참조할 수 있습니다. 이러한 요구 사항에 대한 자세한 내용은 OLE DB 공급자의 키 집합 커서 요구 사항을 참조하십시오. 다른 유형의 커서는 원격 테이블을 참조할 수 없습니다.

  • 저장 프로시저는 SQL Server 데이터 원본에 대해서만 지원됩니다.

  • 연결에서 분산 쿼리를 실행할 수 있으려면 연결에 ANSI_NULLS 및 ANSI_WARNINGS 옵션이 ON으로 설정되어 있어야 합니다. 자세한 내용은 SET ANSI_DEFAULTS(Transact-SQL)을 참조하십시오.

  • 연결된 서버의 테이블을 사용하는 경우 최상의 쿼리 계획을 만들려면 쿼리 프로세서가 연결된 서버에서 데이터 배포 통계를 가져와야 합니다. 테이블의 열에 대해 제한된 사용 권한을 가진 사용자는 유용한 모든 통계를 가져올 권한이 없으므로 덜 효율적인 쿼리 계획을 받게 되어 성능 저하 문제를 겪을 수 있습니다. 연결된 서버가 SQL Server 인스턴스인 경우 사용 가능한 모든 통계를 가져오려면 사용자가 해당 테이블의 소유자이거나 연결된 서버의 sysadmin 고정 서버 역할, db_owner 고정 데이터베이스 역할 또는 db_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.