임시 이름을 사용하여 데이터 원본 확인
OLE DB 데이터 원본이 연결된 서버 구성을 보증할 만큼 자주 참조되지 않을 때는 임시 이름을 테이블 참조로 사용할 수 있습니다. SQL Server에서는 OPENROWSET 및 OPENDATASOURCE 함수를 사용하여 임시 이름을 제공할 수 있습니다.
특정 데이터 원본 액세스 사용자를 제어하는 작업은 연결된 서버를 통해서만 가능합니다. 이 제어는 임의 이름에 대해 사용할 수 없으므로 SQL Server Native Client OLE DB 공급자를 제외한 모든 OLE DB 공급자에 대해 기본적으로 임의 이름이 비활성화됩니다.
중요 |
---|
각 SQL Server 인스턴스에 대해 sysadmin 고정 서버 역할의 멤버는 DisallowAdhocAccess 공급자 옵션 및 Ad Hoc Distributed Queries 서버 구성 옵션을 사용하여 OLE DB 공급자에 대해 임시 연결선 이름을 사용할지 여부를 설정하거나 해제할 수 있습니다. 임시 액세스가 설정된 경우 해당 인스턴스에 로그온한 모든 사용자는 해당 OLE DB 공급자를 사용하여 액세스할 수 있는 네트워크에 있는 모든 데이터 원본을 참조하는 임시 연결선 이름이 포함된 SQL 문을 실행할 수 있습니다. 데이터 원본에 대한 액세스를 제어하기 위해 sysadmin 역할의 멤버는 해당 OLE DB 공급자에 대한 임시 액세스를 해제하여 관리자가 정의한 연결된 서버 이름으로 참조되는 데이터 원본만 사용자가 액세스할 수 있도록 제한할 수 있습니다. 기본적으로 임의 액세스는 SQL Server Native Client OLE DB 공급자에 대해 활성화되어 있고 기타 모든 OLE DB 공급자에 대해서는 비활성화되어 있습니다. |
OPENROWSET과 OPENDATASOURCE는 모두 임시 연결 정보를 제공합니다. 이러한 함수를 사용하여 OLE DB 데이터 원본에 액세스하는 데 필요한 모든 정보를 지정할 수 있지만 OPENROWSET와 OPENDATASOURCE는 서로 바꿔서 사용할 수 없습니다.
테이블(또는 뷰) 이름을 지정하거나 행 집합을 반환하는 쿼리를 지정하여 OLE DB 공급자가 행 집합을 반환하는 모든 곳에서 OPENROWSET을 사용할 수 있습니다. OPENROWSET은 Transact-SQL 문에서 테이블 또는 뷰 이름 대신 사용될 수 있습니다.
공급자가 행 집합을 제공하고 catalog**.schema.object 표기법을 사용하는 경우에만 OPENDATASOURCE를 사용합니다. OPENDATASOURCE는 연결된 서버 이름을 사용할 수 있는 Transact-SQL 구문이 있는 곳에서 사용할 수 있습니다. 따라서 catalog.schema.**object 표기법에서 OPENDATASOURCE는 테이블 또는 뷰를 참조하는 네 부분으로 된 이름 중 첫 번째 부분으로 사용될 수 있습니다.
OPENROWSET과 OPENDATASOURCE는 영구적인 연결된 서버를 구성할 수 없는 임시 경우에 외부 데이터를 액세스하는 데에만 사용해야 합니다. OPENROWSET과 OPENDATASOURCE는 로그인 매핑 관리, 연결된 서버의 메타데이터 쿼리 기능, 제한 시간 값과 같은 여러 연결 설정 구성 기능 등 연결된 서버에서 사용할 수 있는 기능을 모두 제공하지는 않습니다.
보안 정보 |
---|
다른 데이터 원본에 연결할 때 SQL Server는 Windows 인증 로그인을 위해 로그인을 적절하게 가장하지만 SQL Server 인증 로그인을 가장할 수 없습니다. 따라서 SQL Server 인증 로그인의 경우 SQL Server는 SQL Server 서비스가 실행 중인 Windows 계정의 보안 컨텍스트를 사용하여 Active Directory와 같은 비관계형 데이터 원본 및 파일 등의 다른 데이터 원본을 액세스할 수 있습니다. 이렇게 하면 사용 권한이 없는 다른 데이터 원본에 대한 액세스를 해당 로그인에 허용할 수 있습니다. 그러나 SQL Server 서비스가 실행 중인 계정에는 사용 권한이 있습니다. SQL Server 인증 로그인을 사용할 때는 이러한 가능성을 고려해야 합니다. |
OPENROWSET과 OPENDATASOURCE 인수는 변수를 지원하지 않습니다. 인수는 문자열 리터럴로 지정되어야 합니다. 변수를 인수로 전달해야 하는 경우 해당 변수가 포함된 쿼리 문자열을 동적으로 생성하고 EXECUTE 문을 사용하여 실행할 수 있습니다.