다음을 통해 공유


통과 쿼리를 테이블로 사용

SQL Server에서는 통과 쿼리를 OLE DB 데이터 원본에 해석되지 않은 쿼리 문자열로 보냅니다. 이 쿼리는 OLE DB 데이터 원본이 받아들일 수 있는 구문으로 작성되어야 합니다. Transact-SQL 문은 통과 쿼리의 결과를 일반 테이블 참조인 것처럼 사용합니다.

OLE DB 공급자에서 행 집합을 생성하는 방법은 다음과 같습니다.

  • 공급자가 테이블 형식의 행 집합으로 제공할 수 있는 데이터 원본에서 개체를 참조합니다. 모든 공급자가 이 기능을 지원합니다.

  • 공급자가 처리할 수 있고 명령의 결과를 행 집합으로 제공할 수 있는 명령을 공급자에게 전송합니다. 이 기능을 사용하려면 공급자가 OLE DB Command 개체 및 해당 필수 인터페이스를 모두 지원해야 합니다.

공급자가 Command 개체를 지원하면 다음의 Transact-SQL 함수를 사용하여 공급자에게 통과 쿼리라는 명령을 보낼 수 있습니다.

  • OPENQUERY는 연결된 서버 이름을 사용하여 OLE DB 데이터 원본에 명령 문자열을 보냅니다.

  • OPENROWSET과 OPENDATASOURCE는 OLE DB 데이터 원본에 명령 문자열을 보낼 수 있습니다. 그 결과 만들어진 행 집합은 임의 이름을 사용하여 참조될 수 있습니다.

OPENROWSET과 OPENQUERY는 쿼리가 다음 특징 중 하나에 해당할 때만 쿼리 문자열에 저장 프로시저 호출이 포함되는 통과 쿼리를 지원합니다.

  • 정적 SELECT 문을 하나 실행합니다.

  • 동적 EXECUTE 문을 사용하지 않습니다.

  • 데이터 수정 작업을 수행하지 않습니다.

OLE DB 사양은 모든 OLE DB 공급자가 사용해야 하는 단일 명령 언어를 정의하지 않습니다. OLE DB 공급자는 제공하는 데이터와 관련된 모든 명령 언어를 지원할 수 있습니다. 관계형 데이터베이스의 데이터를 제공하는 OLE DB 공급자는 일반적으로 SQL 언어를 지원합니다. 전자 메일 파일이나 네트워크 디렉터리의 데이터를 제공하는 다른 유형의 공급자는 대체로 다른 언어를 지원합니다.