OPENROWSET
OLE DB 데이터 원본에서 원격 데이터를 액세스하는 데 필요한 모든 연결 정보를 포함합니다. 이 방법은 OLE DB를 사용하여 원격 데이터에 연결하고 액세스하는 일회성의 임시 방법이며 연결된 서버에서 테이블을 액세스하는 방법의 대체 방법입니다. OPENROWSET 함수는 테이블 이름인 것처럼 쿼리의 FROM 절에서 참조할 수 있습니다. 또한 OLE DB 공급자의 기능에 따라 INSERT, UPDATE, DELETE 문의 대상 테이블로도 OPENROWSET 함수를 참조할 수 있습니다. 쿼리는 여러 결과 집합을 반환하지만 OPENROWSET는 첫 번째 것만 반환합니다.
구문
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog. ] [ schema. ] object
| 'query' }
)
인수
'provider_name'
레지스트리에 지정된 OLE DB 공급자의 이름을 나타내는 문자열입니다. provider_name에는 기본값이 없습니다.
'datasource'
특정 OLE DB 데이터 원본에 해당되는 문자열 상수입니다. datasource는 공급자의 IDBProperties 인터페이스에 전달되어 공급자를 초기화하는 DBPROP_INIT_DATASOURCE 속성입니다. 일반적으로 이 문자열에는 데이터베이스 파일의 이름, 데이터베이스 서버의 이름 또는 공급자가 데이터베이스의 위치를 알 수 있는 이름이 포함됩니다.
'user_id'
지정된 OLE DB 공급자에게 전달되는 사용자 이름인 문자열 상수입니다. user_id는 연결에 필요한 보안 컨텍스트를 지정하며 DBPROP_AUTH_USERID 속성으로 전달되어 공급자를 초기화합니다.
'password'
OLE DB 공급자에게 전달되는 사용자 암호인 문자열 상수입니다. password는 공급자를 초기화할 때 DBPROP_AUTH_PASSWORD 속성으로 전달됩니다.
'provider_string'
DBPROP_INIT_PROVIDERSTRING 속성으로 전달되어 OLE DB 공급자를 초기화하는 공급자별 연결 문자열입니다. provider_string은 일반적으로 공급자를 초기화하는 데 필요한 모든 연결 정보를 캡슐화합니다.
catalog
지정한 개체가 있는 카탈로그 또는 데이터베이스의 이름입니다.
schema
지정된 개체에 대한 스키마 또는 개체 소유자의 이름입니다.
object
조작할 개체를 고유하게 식별하는 개체 이름입니다.
'query'
공급자에게 보내져 공급자에 의해 실행되는 문자열 상수입니다. Microsoft? SQL Server™는 이 쿼리는 처리하지 않지만 공급자에 의해 반환되는 쿼리 결과는 처리합니다(통과 쿼리). 통과 쿼리는 테이블 이름을 통해 테이블 형식의 데이터를 표시하지는 않고, 명령 언어를 통해 표시하는 공급자에서 사용할 때만 유용합니다. 쿼리 공급자가 OLE DB Command 개체와 필수 인터페이스를 지원하는 하는 경우 원격 서버에서 통과 쿼리가 지원됩니다. 자세한 내용은 SQL Server OLE DB Programmer's Reference를 참조하십시오.
비고
OLE DB 공급자가 지정된 데이터 원본에서 여러 카탈로그와 스키마를 지원하는 경우에는 카탈로그 이름과 스키마 이름이 필요합니다. OLE DB 공급자가 카탈로그와 스키마를 지원하지 않는 경우에는 catalog와 schema에 대한 값을 생략할 수 있습니다.
공급자가 스키마 이름만 지원하는 경우에는 schema.object 형식의 두 부분으로 된 이름을 반드시 지정해야 합니다. 공급자가 카탈로그 이름만 지원하는 경우에는 catalog.schema.object 형식의 세 부분으로 된 이름을 반드시 지정해야 합니다.
OPENROWSET은 변수를 인수로 받아들이지 않습니다.
사용 권한
OPENROWSET 권한은 OLE DB 공급자에게 전달되는 사용자 이름의 권한에 의해 결정됩니다.
예제
A. SELECT, Microsoft OLE DB Provider for SQL Server와 함께 OPENROWSET 사용
다음은 Microsoft OLE DB Provider for SQL Server를 사용하여 seattle1이라는 원격 서버에 있는 pubs 데이터베이스의 authors 테이블을 액세스하는 예제입니다. 공급자는 datasource, user_id, password에서 초기화되며 반환되는 행 집합을 정의하기 위해 SELECT가 사용됩니다.
USE pubs GO SELECT a.* FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass', 'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a GO
B. 개체와 ODBC용 OLE DB 공급자와 함께 OPENROWSET 사용
다음은 ODBC용 OLE DB 공급자와 SQL Server ODBC 드라이버를 사용하여 seattle1이라는 원격 서버에 있는 pubs 데이터베이스의 authors 테이블을 액세스하는 예제입니다. 공급자는 ODBC 공급자가 사용하는 ODBC 구문에서 지정된 provider_string으로 초기화되며, 반환되는 행 집합은 catalog.schema.object 구문을 사용하여 정의됩니다.
USE pubs GO SELECT a.* FROM OPENROWSET('MSDASQL', 'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass', pubs.dbo.authors) AS a ORDER BY a.au_lname, a.au_fname GO
C. Microsoft OLE DB Provider for Jet 사용
다음은 Microsoft OLE DB Provider for Jet을 사용하여 Microsoft Access Northwind 데이터베이스의 orders 테이블을 액세스하는 예제입니다.
참고 다음 예제는 Access가 설치된 것을 전제로 합니다.
USE pubs GO SELECT a.* FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) AS a GO
D. OPENROWSET과 다른 테이블을 INNER JOIN으로 사용
다음은 로컬 SQL Server Northwind 데이터베이스의 customers 테이블과 동일한 컴퓨터에 저장된 Access Northwind 데이터베이스의 orders 테이블에서 모든 데이터를 선택하는 예제입니다.
참고 다음 예제는 Access가 설치된 것을 전제로 합니다.
USE pubs GO SELECT c.*, o.* FROM Northwind.dbo.Customers AS c INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) AS o ON c.CustomerID = o.CustomerID GO
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
![]() |
☞자세히보기 |
|
|