통과 쿼리를 테이블로 사용
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 언어를 지원합니다. 전자 메일 파일이나 네트워크 디렉터리의 데이터를 제공하는 다른 유형의 공급자는 대체로 다른 언어를 지원합니다.