다음을 통해 공유


임시 이름을 사용하여 데이터 원본 확인

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 문을 사용하여 실행할 수 있습니다.