외부 데이터 액세스

OLE DB 데이터 원본에서 데이터를 액세스하려면 SQL Server에 다음 정보를 제공해야 합니다.

  • 데이터 원본을 제공하는 OLE DB 공급자 이름

  • 데이터 원본의 위치를 찾기 위해 OLE DB 공급자가 필요로 하는 모든 정보

  • OLE DB 데이터 원본이 행 집합으로 제공할 수 있는 개체 이름 또는 데이터 원본이 행 집합을 제공하도록 OLE DB 공급자에게 보낼 수 있는 쿼리. 행 집합으로 제공할 수 있는 개체를 원격 테이블이라고 합니다. 행 집합을 생성하는 쿼리를 통과 쿼리라고 합니다.

  • 선택적으로 OLE DB 데이터 원본에 대한 유효한 로그인 ID를 SQL Server에 제공할 수 있습니다.

SQL Server는 연결된 서버 이름이나 임시 컴퓨터 이름을 사용하여 Transact-SQL 문에서 유형이 다른 OLE DB 데이터 원본을 참조합니다.

연결된 서버 이름

연결된 서버는 OLE DB 데이터 원본 액세스에 필요한 모든 정보와 함께 SQL Server에 정의된 가상 서버입니다. 연결된 서버 이름은 sp_addlinkedserver 시스템 저장 프로시저를 사용하여 정의됩니다. 연결된 서버 정의는 OLE DB 데이터 원본을 찾는 데 필요한 모든 정보를 포함합니다. 로컬 SQL Server 로그인은 sp_addlinkedsrvlogin을 사용하여 연결된 서버의 로그인에 매핑됩니다.

원격 테이블은 다음 중 하나로 연결된 서버 이름을 사용하여 참조될 수 있습니다.

  • 네 부분으로 된 이름 테이블의 서버 이름 또는 Transact-SQL 문에 있는 뷰 참조. 이름의 나머지 세 부분은 연결된 서버에서 행 집합으로 제공되는 개체를 참조합니다.

  • OPENQUERY 함수에 대한 입력 매개 변수. OPENQUERY는 OLE DB 공급자에게 실행 명령을 보냅니다. 그런 다음 반환된 행 집합을 Transact-SQL 문에서 테이블 또는 뷰 참조로 사용할 수 있습니다.

자세한 내용은 연결된 서버 이름을 사용하여 데이터 원본 확인을 참조하십시오.

임시 이름

임시 이름은 연결된 서버로 정의되지 않은 OLE DB 데이터 원본에 대해 자주 사용되지 않는 쿼리에 사용할 수 있습니다. SQL Server에서 OPENROWSET과 OPENDATASOURCE 함수는 OLE DB 데이터 원본의 데이터 액세스를 위한 연결 정보를 제공합니다.

기본적으로 임시 이름은 지원되지 않습니다. DisallowAdhocAccess 공급자 옵션은 0으로 설정되어야 하며 Ad Hoc Distributed Queries 고급 구성 옵션이 설정되어야 합니다.

보안 정보보안 정보

임시 이름 사용을 설정하면 SQL Server에 대한 모든 인증된 로그인에서 공급자에 액세스할 수 있습니다. SQL Server 관리자는 모든 로컬 로그인에서 액세스해도 안전한 신뢰할 수 있는 공급자에 대해서만 이 기능을 설정해야 합니다.

OPENROWSET과 OPENDATASOURCE는 자주 사용되지 않는 OLE DB 데이터 원본을 참조하기 위해서만 사용해야 합니다. 여러 번 액세스될 모든 데이터 원본에 대해서는 연결된 서버를 정의해야 합니다. OPENDATASOURCE나 OPENROWSET 모두 연결된 서버 정의의 모든 기능을 제공하지는 않습니다. 여기에는 보안 관리 및 카탈로그 정보 쿼리 기능이 포함됩니다. 따라서 이 함수가 호출될 때마다 암호를 포함한 모든 연결 정보를 제공해야 합니다.

OPENROWSET 및 OPENDATASOURCE는 함수로 보이며 편의를 위해 함수인 것처럼 참조될 수 있지만 OPENROWSET 및 OPENDATASOURCE는 매크로이며 Transact-SQL 변수를 인수로 제공할 수 없습니다.

OPENROWSET은 행 집합을 반환하는 모든 OLE DB 공급자와 함께 사용할 수 있으며 Transact-SQL 문에서 테이블 또는 뷰 참조가 사용되는 곳이면 어디에서든 사용할 수 있습니다. OPENROWSET은 다음과 함께 지정됩니다.

  • OLE DB 데이터 원본에 연결하는 데 필요한 모든 정보

  • 행 집합을 생성하는 개체 이름이나 쿼리

OPENDATASOURCE는 네 부분으로 된 개체 이름의 일부로서 연결 정보를 제공합니다. 이 함수는 catalog**.schema.**object 표기법을 사용하여 여러 행 집합을 제공하는 OLE DB 공급자만 지원합니다. OPENDATASOURCE는 연결된 서버 이름을 사용할 수 있는 Transact-SQL 구문에서 동일 위치에 사용할 수 있습니다. OPENDATASOURCE는 다음과 함께 지정됩니다.

  • 데이터 원본 액세스에 사용되는 OLE DB 공급자의 PROGID로 등록된 이름

  • OLE DB 공급자로 보낼 여러 가지 연결 속성을 지정하는 연결 문자열. 연결 문자열 구문은 일련의 키워드와 값 쌍으로 이루어집니다. 기본 구문은 Microsoft Data Access Software Development Kit에 정의되어 있으며, 각 공급자는 지원하는 특정 키워드와 값 쌍을 문서로 제공합니다. 연결 문자열에 대한 자세한 내용은 OPENDATASOURCE(Transact-SQL)를 참조하십시오.

자세한 내용은 임시 이름을 사용하여 데이터 원본 확인을 참조하십시오.

연결된 서버 액세스

sp_addlinkedserver를 사용하여 연결된 서버를 만든 다음에는 다음을 사용하여 서버에 액세스할 수 있습니다.

  • 연결된 서버 기반 이름을 사용하여 SELECT, INSERT, UPDATE 및 DELETE 문을 통해 연결된 서버의 테이블에 액세스하는 분산 쿼리

  • 네 부분으로 된 이름을 사용하여 연결된 서버에 대해 실행되는 원격 저장 프로시저

  • AT linked_server_name 확장을 사용하여 매개 변수화된 임의 통과 명령을 사용하는 EXECUTE 문. 이 명령에는 DDL(데이터 정의 언어) 및 DML(데이터 조작 언어) 문이나 두 개 이상의 결과를 반환하는 명령이 포함됩니다. 자세한 내용은 통과 쿼리를 테이블로 사용을 참조하십시오.

sp_addserver는 기존 응용 프로그램에 대한 호환을 위해 유지되지만 이 저장 프로시저는 이후 버전에서 지원되지 않습니다. 응용 프로그램을 SQL Server 2008로 이식하면 응용 프로그램에서 연결된 서버 정의에 대해 분산 쿼리를 사용하는 새로운 코드와 원격 서버 정의를 사용하는 기존 코드를 함께 사용해야 할 수도 있습니다. 연결된 서버와 원격 서버는 모두 같은 네임스페이스를 사용합니다. 따라서 연결된 서버나 원격 서버 정의 중 하나에서는 원격으로 액세스되는 서버의 네트워크 이름과 다른 이름을 사용해야 합니다. 다른 서버 이름으로 두 항목 중 하나를 정의하고 sp_setnetname을 사용하여 이 정의를 원격 서버의 네트워크 이름과 연결하십시오.