Jet용 OLE DB 공급자

Jet용 Microsoft OLE DB 공급자는 Microsoft Access 데이터베이스에 OLE DB 인터페이스를 제공하고 SQL Server 2005 이상 분산 쿼리로 Access 데이터베이스 및 Excel 스프레드시트를 쿼리할 수 있도록 합니다.

Microsoft Office 2007 드라이버를 다운로드하려면 2007 Office System 드라이버: 데이터 연결 구성 요소 를 참조하십시오.

팁

Microsoft Access에 연결하려면 SQL Server가 Microsoft Access 데이터베이스 엔진을 시작해야 합니다. 다른 대부분의 공급자와는 달리 Microsoft Access는 경량의 공급자가 아니지만 전체 Microsoft Access 데이터베이스 엔진은 경량의 공급자입니다. SQL Server 프로세스 공간에서 Microsoft Access를 열면 디스크, 프로세서 또는 메모리 리소스의 부족으로 인해 오류가 발생할 수 있습니다. 발생할 수 있는 오류에는 "OLE DB 공급자의 데이터 원본 개체를 초기화할 수 없습니다."도 포함됩니다. 메모리 부족 오류가 발생하지 않도록 하려면 SQL Server 메모리 프로세스 공간 외부에서 열리도록 공급자를 구성하십시오.

SQL Server 메모리 공간 외부에서 Microsoft Access를 실행하려면

  1. SQL Server Management Studio 개체 탐색기에서 SQL Server 이름, 서버 개체, 연결된 서버, 공급자를 차례로 확장하고 Microsoft Access 공급자 Microsoft.ACE.OLEDB.12.0 또는 Microsoft.Jet.OLEDB.4.0을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  2. 공급자 옵션 상자에서 Inprocess 허용의 선택을 취소합니다.

  3. 확인을 클릭합니다.

Access 데이터베이스에 액세스하기 위해 연결된 서버를 만들려면

  1. Microsoft.Jet.OLEDB.4.0을 provider_name으로 지정하고 Access .mdb 데이터베이스 파일의 전체 경로 이름을 data_source로 지정하여 연결된 서버를 만드는 sp_addlinkedserver를 실행합니다. .mdb 데이터베이스 파일은 서버에 있어야 하고, data_source는 클라이언트가 아닌 서버에서 평가되어야 하며, 경로는 서버에서 유효한 경로여야 합니다.

    예를 들어 c:\mydata 디렉터리에 있는 Nwind.mdb라는 Access 데이터베이스에 대해 작동하는 Nwind라는 연결된 서버를 만들려면 다음과 같이 하십시오.

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. 보안되지 않는 Access 데이터베이스에 액세스하려면 Access 데이터베이스에 액세스하려는 SQL Server 로그인에는 암호 없이 사용자 이름 Admin으로 정의된 로그인 매핑이 있어야 합니다.

    다음 예에서는 Nwind라는 연결된 서버에 대해 로컬 사용자 Joe에게 액세스를 부여합니다.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    보안된 Access 데이터베이스를 액세스하려면 Access에서 올바른 작업 그룹 정보 파일을 사용하도록 레지스트리 편집기에서 레지스트리를 구성하십시오. 레지스트리 편집기를 사용하여 다음 레지스트리 항목에 대해 Access에서 사용할 작업 그룹 정보 파일의 전체 경로 이름을 추가하십시오.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. 레지스트리 항목을 구성한 후 sp_addlinkedsrvlogin을 사용하여 로컬 로그인에서 Access 로그인으로의 로그인 매핑을 만드십시오.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
보안 정보보안 정보

이 예에서는 Windows 인증을 사용하지 않습니다. 암호는 암호화되지 않은 상태로 전송됩니다. 암호는 디스크, 백업 및 로그 파일에 저장되는 데이터 원본 정의와 스크립트에 표시될 수 있습니다. 따라서 이러한 유형의 연결에는 관리자 암호를 사용하지 마십시오. 사용자의 환경과 관련된 보안 지침에 대해서는 해당 네트워크 관리자에게 문의하십시오.

Access 데이터베이스에는 카탈로그와 스키마 이름이 없습니다. 따라서 Access 기반의 연결된 서버는 linked_server**...**table_name 형식의 네 부분으로 된 이름을 사용하여 분산 쿼리에서 참조될 수 있습니다.

다음 예에서는 Nwind라는 연결된 서버의 Employees 테이블에서 모든 행을 검색합니다.

SELECT * 
FROM Nwind...Employees

Excel 스프레드시트에 대해 연결된 서버를 만들려면

Jet 4.0용 Microsoft OLE DB 공급자를 사용하여 Microsoft Excel 스프레드시트에 액세스할 수 있습니다.

  • Excel 스프레드시트를 액세스하는 연결된 서버를 만들려면 다음 예와 같은 형식을 사용하십시오.

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Excel 스프레드시트의 데이터를 액세스하려면 셀 범위에 이름을 연결하십시오. 범위 이름을 테이블 이름으로 사용하여 명명된 범위를 액세스할 수 있습니다. 다음 쿼리를 사용하면 이전 예제에서 만든 연결된 서버를 사용하여 SalesData라는 명명된 범위를 액세스할 수 있습니다.

    SELECT *
    FROM EXCEL...SalesData
    GO
    

명명된 셀 범위에 행을 삽입하면 명명된 셀 범위의 일부인 마지막 행 다음에 이 행이 추가됩니다. 따라서 열 머리글 뒤에 rA 행을 삽입하려면 열 머리글 셀을 이름과 연결한 다음 이 이름을 테이블 이름으로 사용하십시오. 행이 삽입되면 셀 범위가 자동으로 증가합니다.

서식 있는 텍스트에 대해 연결된 서버를 설정하려면

Jet용 Microsoft OLE DB 공급자를 사용하여 텍스트 파일에 액세스하고 쿼리할 수 있습니다.

  • Access .mdb 파일의 테이블에서처럼 파일을 연결하지 않고 직접 텍스트 파일을 액세스하기 위해 연결된 서버를 만들려면 다음 예와 같이 sp_addlinkedserver를 실행하십시오.

    공급자는 Microsoft.Jet.OLEDB.4.0이고 공급자 문자열은 'Text'입니다. 데이터 원본은 텍스트 파일이 포함된 디렉터리의 전체 경로 이름입니다. Schema.ini 파일은 텍스트 파일과 같은 디렉터리에 있어야 합니다. Schema.ini 파일은 텍스트 파일의 구조를 기술합니다. Schema.ini 파일을 만드는 방법은 Jet Database Engine 설명서를 참조하십시오.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]