연결된 서버(데이터베이스 엔진)

적용 대상:SQL ServerAzure SQL Managed Instance

연결된 서버를 사용하면 SQL Server 데이터베이스 엔진 및 Azure SQL Managed Instance가 원격 데이터 원본에서 데이터를 읽고 SQL Server 인스턴스 외부에서 원격 데이터베이스 서버(예: OLE DB 데이터 원본)에 대해 명령을 실행할 수 있습니다. 일반적으로 연결된 서버는 데이터베이스 엔진에서 다른 SQL Server 인스턴스 또는 Oracle과 같은 다른 데이터베이스 제품의 테이블을 포함하는 Transact-SQL 문을 실행할 수 있도록 구성됩니다. 타사 데이터베이스 공급자 및 Azure Cosmos DB를 포함한 많은 형식의 OLE DB 데이터 원본을 연결된 서버로 구성할 수 있습니다.

참고 항목

연결된 서버는 SQL Server 데이터베이스 엔진 및 Azure SQL Managed Instance에서 사용할 수 있습니다. Azure SQL Database Singleton 및 탄력적 풀에서는 사용할 수 없습니다. SQL Managed Instance의 몇 가지 제약 조건은 다음과 같습니다.

연결된 서버를 사용하는 경우

연결된 서버를 사용하면 다른 데이터베이스의 데이터를 가져오고 업데이트할 수 있는 분산 데이터베이스를 구현할 수 있습니다. 사용자 지정 애플리케이션 코드를 만들거나 원격 데이터 원본에서 직접 로드하지 않고 분할된 데이터베이스를 구현해야 하는 시나리오에서 좋은 솔루션이 됩니다. 연결된 서버에는 다음과 같은 이점이 있습니다.

  • SQL Server외부에서 데이터에 액세스할 수 있습니다.

  • 기업 전체에 걸쳐 유형이 다른 데이터 원본에 대해 분산 쿼리, 업데이트, 명령, 트랜잭션 등을 수행할 수 있습니다.

  • 다양한 데이터 원본을 유사하게 처리할 수 있습니다.

SQL Server Management Studio 를 사용하거나 sp_addlinkedserver(Transact-SQL) 문을 사용하여 연결된 서버를 구성할 수 있습니다. OLE DB Provider에 따라 필요한 매개 변수의 유형과 개수가 크게 다릅니다. 예를 들어 일부 공급자는 sp_addlinkedsrvlogin(Transact-SQL)을 사용하여 연결에 대한 보안 컨텍스트를 제공할 것을 요구합니다. 일부 OLE DB Provider는 SQL Server 를 통해 OLE DB 원본에서 데이터를 업데이트하도록 허용합니다. 다른 일부 공급자는 읽기 전용 데이터 액세스만 제공합니다. 각 OLE DB Provider에 대한 자세한 내용은 해당 OLE DB Provider에 대한 설명서를 참조하십시오.

연결된 서버 구성 요소

연결된 서버 정의는 다음과 같은 개체를 지정합니다.

  • OLE DB Provider

  • OLE DB 데이터 원본

OLE DB Provider 는 특정 데이터 원본과 상호 작용하고 관리하는 DLL입니다. OLE DB 데이터 원본 은 OLE DB를 통해 액세스할 수 있는 특정 데이터베이스를 식별합니다. 연결된 서버 정의를 통해 쿼리되는 데이터 원본은 일반적으로 데이터베이스이지만 OLE DB Provider에는 여러 파일 및 파일 형식이 존재합니다. 여기에는 텍스트 파일, 스프레드시트 데이터 및 전체 텍스트 내용의 검색 결과가 포함됩니다.

SQL Server 2019 (15.x)부터 Microsoft OLE DB Driver for SQL Server(MSOLEDBSQL)(PROGID: MSOLEDBSQL)가 기본 OLE DB 공급자입니다. 이전 버전에서는 SQL Server Native Client OLE DB 공급자(SQLNCLI)(PROGID: SQLNCLI11)가 기본 OLE DB 공급자였습니다.

중요

SQL Server Native Client(약칭 SNAC)는 SQL Server 2022(16.x) 및 SSMS(SQL Server Management Studio) 19에서 제거되었습니다. SQL Server Native Client OLE DB 공급자(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 모두 새로운 개발에 권장되지 않습니다. 앞으로 SQL Server용 새 Microsoft OLE DB 드라이버(MSOLEDBSQL)로 전환합니다.

Microsoft Access 및 Excel 원본에 연결된 서버는 32비트 Microsoft.JET.OLEDB.4.0 OLE DB 공급자를 사용하는 경우에만 Microsoft에서 지원됩니다.

참고

SQL Server 분산 쿼리는 필수 OLE DB 인터페이스를 구현하는 모든 OLE DB Provider에서 실행되도록 디자인되었습니다. 그러나 SQL Server는 기본 OLE DB 공급자에 대해 테스트되었습니다.

연결된 서버 정보

다음 그림은 연결된 서버 구성의 기본 사항을 보여 줍니다.

Diagram showing client tier, server tier, and database server tier

연결된 서버는 일반적으로 분산 쿼리를 처리하는 데 사용됩니다. 클라이언트 애플리케이션이 연결된 서버를 통해 분산 쿼리를 실행할 때 SQL Server 는 명령을 구문 분석하고 OLE DB로 요청을 보냅니다. 행 집합 요청은 공급자에 대해 쿼리를 실행하거나 공급자로부터 기본 테이블을 여는 형식일 수 있습니다.

참고

연결된 서버를 통해 데이터를 반환하는 데이터 원본의 경우 해당 데이터 원본에 대한 OLE DB Provider(DLL)는 SQL Server인스턴스와 같은 서버에 있어야 합니다.

중요

OLE DB Provider를 사용하는 경우 SQL Server 서비스가 실행되는 계정에는 공급자가 설치된 디렉터리 및 모든 하위 디렉터리에 대한 읽기 및 실행 권한이 있어야 합니다. 여기에는 Microsoft 릴리스 공급자 및 모든 타사 공급자가 포함됩니다.

참고

연결된 서버는 완전 위임을 사용할 때 Active Directory 통과 인증을 지원합니다. SQL Server 2017(14.x) CU17부터 제한된 위임을 사용하는 통과 인증도 지원되지만 리소스 기반 제한된 위임은 지원되지 않습니다.

공급자 관리

일련의 옵션을 사용하여 SQL Server 에서 레지스트리에 지정된 OLE DB Provider를 로드하고 사용하는 방법을 제어할 수 있습니다.

연결된 서버 정의 관리

연결된 서버를 설정할 때 연결 정보와 데이터 원본 정보를 SQL Server에 등록합니다. 등록한 후에는 단일 논리적 이름으로 데이터 원본을 참조할 수 있습니다.

저장 프로시저와 카탈로그 뷰를 사용하여 연결된 서버 정의를 다음과 같이 관리할 수 있습니다.

  • sp_addlinkedserver를 실행하여 연결된 서버 정의를 만듭니다.

  • sys.servers 시스템 카탈로그 뷰에 대해 쿼리를 실행하여 특정 SQL Server 인스턴스에 정의된 연결된 서버에 대한 정보를 봅니다.

  • sp_dropserver를 실행하여 연결된 서버 정의를 삭제합니다. 사용자는 이 저장 프로시저를 사용하여 원격 서버를 제거할 수 있습니다.

또한 SQL Server Management Studio를 사용하여 연결된 서버를 정의할 수 있습니다. 개체 탐색기에서 서버 개체를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 선택하고 연결된 서버를 선택합니다. 연결된 서버 이름을 마우스 오른쪽 단추로 클릭하고 삭제를 선택하면 연결된 서버 정의를 삭제할 수 있습니다.

연결된 서버에 대해 분산 쿼리를 실행할 경우 각 데이터 원본에서 쿼리할 정식 이름인, 네 부분으로 된 테이블 이름이 포함됩니다. 네 부분으로 된 이 이름은 linked_server_name.catalog.schema.object_name형식이어야 합니다.

참고

연결된 서버는 이 서버가 정의된 서버의 포인트 백(루프백)에 정의될 수 있습니다. 단일 서버 네트워크에서 분산 쿼리를 사용하는 애플리케이션을 테스트할 때 루프백 서버를 유용하게 사용할 수 있습니다. 루프백 연결된 서버는 테스트를 위한 것이며 분산 트랜잭션과 같은 많은 작업에 지원되지 않습니다.

Azure SQL Managed Instance 연결된 서버 인증

Azure SQL Managed Instance 연결된 서버는 SQL 인증과 Microsoft Entra ID(이전에는 Azure Active Directory)를 사용하는 인증 모두 지원합니다. 지원되는 두 가지 Microsoft Entra 인증 모드는 관리 ID와 통과입니다. 관리 ID 인증을 사용하여 로컬 로그인이 원격 연결된 서버를 쿼리하도록 허용할 수 있습니다. 통과 인증을 사용하여 로컬 인스턴스로 인증할 수 있는 보안 주체가 연결된 서버를 통해 원격 인스턴스에 액세스하도록 허용합니다. 통과 인증을 위한 필수 조건은 동일한 보안 주체가 원격 서버의 로그인으로 추가되고 두 인스턴스가 모두 SQL 트러스트 그룹의 구성원이어야 합니다.

참고 항목

통과 모드로 구성된 연결된 서버의 기존 정의에서는 Microsoft Entra 인증을 지원합니다. 서버 신뢰 그룹에 SQL Managed Instance를 추가하기만 하면 됩니다.

Microsoft Entra 인증 제한 사항

  • Microsoft Entra 인증은 여러 Microsoft Entra 테넌트에서 SQL Managed Instance에 지원되지 않습니다.
  • 연결된 서버에 대한 Microsoft Entra 인증은 OLE DB 드라이버 버전 18.2.1 이상에서만 지원됩니다.
  • SQL Managed Instance에서 SQL Server로 연결된 서버에 대한 Microsoft Entra 인증은 매핑된 로컬 로그인에만 지원됩니다. 보안 컨텍스트 전파는 지원되지 않습니다. 즉, 통과 인증은 지원되지 않지만 관리 ID 인증은 지원됩니다.

MSOLEDBSQL19 및 연결된 서버

현재 MSOLEDBSQL19에서는 암호화 및 신뢰할 수 있는 인증서 없이 연결된 서버를 만들지 못하게 합니다(자체 서명된 인증서가 부족). 연결된 서버가 필요하면 지원되는 기존 버전의 MSOLEDBSQL을 사용합니다.

참고 항목

다음 단계