알파벳 수프가 재미있는 식사였던 평온한 어린 시절을 떠올려보세요. 데이터베이스 버전의 알파벳 수프를 맛볼 때 마음 속에 이 행복한 생각을 간직하세요. 다음 섹션에서는 연결 문자열을 사용하여 데이터베이스에 액세스하고 Access VBA 코드에서 데이터베이스 프로그래밍 인터페이스를 사용하는 방법에 대한 기본 사항을 설명합니다.
이 문서의 내용
ODBC 드라이버 또는 OLE DB 공급자 사용
연결 문자열에 오래 되었습니다. 서식 있는 연결 문자열을 Access 사용자 인터페이스 또는 VBA 코드에서 정의할 수 있습니다. 데이터베이스에 직접 정보를 전달하는 연결 문자열(ODBC이든 OLE DB이든)(예: 서버 위치, 데이터베이스 이름, 보안 유형 및 기타 유용한 옵션). 예:
ODBC;DRIVER=SQL Server;SERVER="MyServer";DATABASE="MyHRdb";TRUSTED_CONNECTION=Yes
Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyHRdb; Integrated Security=SSPI;
처음에는, ODBC와 OLEDB 기술이 포함되어 있으며 SQL Server 버전 2005 ~ 2012에서 계속 사용할 수 있는 독립형 라이브러리인 SQL SNAC(Server Native Client)가 있었습니다. 많은 레거시 응용 프로그램에서 SNAC를 사용했고 아직도 이전 버전과의 호환성이 지원되고 있지만, 새 응용 프로그램 개발에 이 기능을 사용하지 않는 것이 좋습니다. 이후에는 개별적으로 다운로드 가능한 ODBC 드라이브 버전을 사용해야 합니다.
ODBC 드라이버
ODBC(Open Database Connectivity)는 Microsoft Access 데이터베이스를 Microsoft SQL Server와 같은 외부 데이터 원본에 연결하는 데 사용하는 프로토콜입니다. 일반적으로 파일 데이터 원본(DSN 파일이라고도 함)을 사용하여 연결 문자열을 추가합니다. 이 경우 FILEDSN 키워드를 연결 문자열에 사용하거나 레지스트리에 저장하며, 이 경우에는 DSN 키워드를 사용합니다. 또는 "DSN 없는" 연결 문자열을 사용하여 이 속성을 설정하는 데 VBA를 사용할 수 있습니다.
몇 년에 걸쳐서 ODBC 드라이버는 세 가지 단계로 제공되었습니다.
-
2005년 이전에는, ODBC 드라이버가 WDAC(Windows Data Access Components)(원래 MDAC(MDACMicrosoft Data Access Components)라고도 함)에 제공되었습니다. 이전 버전과의 호환성을 위해 이 구성 요소는 Windows에 계속 제공됩니다. 자세한 내용은 Microsoft 또는 Windows Data Access Components를 참조하세요.
-
ODBC 드라이버는 SQL Server 2005 ~ SQL Server 2012용 SNAC에 제공됩니다.
-
SQL Server 2012 다음에는, ODBC 드라이버가 개별적으로 제공되었고 새 SQL Server 기능에 대한 지원이 포함되어 있습니다.
새로운 개발의 경우, 처음 두 단계의 ODBC 드라이버가 아닌, 세 번째 단계의 ODBC 드라이버를 사용하는 것이 좋습니다.
OLE DB 공급자
개체 연결과 포함, 데이터베이스(OLE DB)는 Access 데이터베이스와 외부 데이터 원본(예: Microsoft SQL Server)을 연결하는 데 사용하는 최근 프로토콜입니다. OLE DB에는 DSN가 필요하지 않으며 ODBC 데이터 원본 및 ODBC 드라이버에 대한 모든 액세스 권한을 제공합니다.
팁 일반적으로 데이터 연결 속성 대화 상자에서 OLE DB 연결 문자열을 추가합니다. Access에서 데이터 연결 속성 대화 상자를 열 수 없는 경우에도, Windows 탐색기에서 빈 .txt 파일을 만들고 파일 형식을 .udl로 변경한 다음, 파일을 두 번 클릭할 수 있습니다. 연결 문자열을 만든 후 파일 형식을 다시 .txt로 변경합니다.
몇 년에 걸쳐서 OLE DB 공급자는 세 가지 단계로 제공되었습니다.
-
2005년 이전에는, OLE DB 제공자가 WDAC(Windows Data Access Components)(원래 MDAC(MDACMicrosoft Data Access Components)라고도 함)에 제공되었습니다.
-
OLE DB 제공자는 SQL Server 2005 ~ SQL Server 2017에 제공됩니다. 2011년에는 더 이상 사용되지 않았습니다.
-
2017년에는 SQL Server OLE DB 공급자의 사용 중지가 취소되었습니다.
현재 새 솔루션 개발에 권장되는 버전은 SQL Server용 OLE DB 드라이버 18입니다.
ODBC 연결 문자열을 사용하여 성능을 최적화하는 방법
성능을 최적화하고 네트워크 트래픽을 최소화 하고 SQL Server 데이터베이스에 대한 다중 사용자 액세스를 줄이려면, 여러 레코드 집합에 대한 연결 문자열을 공유하여 가능한 한 적은 수의 연결 문자열을 사용합니다. Ace에서 연결 문자열을 서버에 전달하는 경우에도, 다음 키워드를 이해하고 사용합니다. DSN, DATABASE, UID, PWD 및 DRIVERR를 통해 클라이언트/서버 통신을 최소화할 수 있습니다.
참고 외부 데이터 원본에 대한 ODBC 연결이 끊어지는 경우, Access에서 자동으로 다시 연결하려고 시도합니다. 재시도에 성공하는 경우 계속해서 작업을 할 수 있습니다. 재시도에 실패하는 경우 해당 연결에 의존하지 않는 개체를 계속 사용할 수 있습니다. 다시 연결하려면 Access를 닫고 다시 엽니다.
ODBC와 OLE DB를 모두 사용하는 경우 권장 사항
연결 문자열과 데이터베이스 액세스 기술을 함께 사용하지 마세요. DAO에 ODBC 연결 문자열을 사용합니다. ADO에 OLE DB 연결 문자열을 사용합니다. 응용 프로그램에 DAO와 ADO를 모두 사용 하는 VBA 코드가 포함되어 있는 경우, DAO에 ODBC 드라이버를 사용하고 ADO에 OLE DB 제공자를 사용하세요. ODBC 및 OLEDB 각각에 최신 기능 및 지원을 사용하기 위해 노력합니다.
ODBC는 용어 드라이버를 사용하고 OLE DB는 용어 공급자를 사용합니다. 용어는 동일한 유형의 소프트웨어 구성 요소를 설명하지만, 연결 문자열 구문에서는 호환되지 않습니다. 설명된 대로 올바른 값을 사용합니다.
Access에서 SQL Server에 프로그래밍 방법으로 접속
Access에서 SQL Server 데이터베이스에 프로그래밍 방식으로 접속하는 두 가지 방법이 있습니다.
DAO
DAO(Data Access Object)는 데이터베이스에 대한 추상적인 인터페이스를 제공합니다. Microsoft DAO(Data Access Object)는 개체, 테이블, 필드, 인덱스, 관계, 쿼리, 속성 및 외부 데이터베이스를 만들고 삭제하고 수정하고 나열할 수 있도록 해주는 기본 프로그래밍 개체 모델입니다.
자세한 내용은 Microsoft 데이터 액세스 개체 참조를 참조하세요.
ADO
ADO(ActiveX Data Objects)는 고급 프로그래밍 모델을 제공하며 타사 라이브러리에 대한 참조로 Access에서 사용할 수 있습니다. ADO는 간단하게 배울 수 있으며 이를 사용하며 클라이언트 응용 프로그램에서 Access 및 SQL Server를 비롯한 다양한 원본에서 데이터에 액세스하고 이를 조작할 수 있습니다. 주요 이점은 사용 용이성, 고속, 낮은 메모리 오버 헤드 및 작은 디스크 공간입니다. 또한 ADO는 빌드 및 웹 기반 응용 프로그램의 핵심 기능을 지원합니다.
자세한 내용은 Microsoft ActiveX Data Objects 참조 및 Microsoft ADO(ActiveX Data Objects)를 참조하세요.
어느 사이트를 사용해야 할까요?
VBA 코드를 사용 하는 Access 솔루션에서 DAO, ADO 또는이 두 가지를 모두 데이터베이스 인터페이스 기술로 사용할 수 있습니다. DAO는 Access에서 계속 기본값이 됩니다. 예를 들어, 모든 양식과 보고서 및 Access 쿼리는 DAO를 사용합니다. 그러나 SQL Server로 마이그레이션할 때는 ADO를 사용하여 솔루션을 보다 효율적으로 만드는 것이 좋습니다. 다음은 DAO나 ADO를 사용할 시기를 결정 하는 데 도움이 되는 일반적인 지침입니다.
원하는 경우 DAO 사용:
-
VBA를 사용하지 않고 읽기/쓰기, 바운드 폼을 만듭니다.
-
로컬 테이블을 조회합니다.
-
임시 테이블로 데이터를 다운로드합니다.
-
읽기 전용 모드에서 보고서 또는 양식의 데이터 원본으로 통과 쿼리를 사용합니다.
-
VBA에서 TableDef 또는 Querydef 개체를 정의하고 사용합니다.
다음과 같은 경우에 ADO를 사용합니다.
-
비동기 작업 수행과 같이 최적화할 수 있는 추가적인 방법을 활용합니다.
-
DDL 및 DML 통과 쿼리를 실행합니다.
-
VBA의 레코드 집합을 통해 SQL Server 데이터에 직접 액세스할 수 있습니다.
-
Blob 스트리밍과 같은 특정 작업에 사용할 간단한 코드를 작성합니다.
-
VBA에서 명령 개체를 사용하여 매개 변수와 함께 저장된 프로시저를 직접 호출합니다.
ODBC 드라이버 버전 요약
다음 표에서는 ODBC 드라이버 버전, 다운로드 위치 및 기능 지원에 대한 중요한 정보를 요약합니다. Office가 아니라, Windows를 기반으로 하는 올바른 비트 버전(64비트 또는 32비트)의 드라이버를 사용해야 합니다. 64비트 Windows에서 32비트 Access를 실행하는 경우, Access에 필요한 32비트 구성 요소가 포함된 64비트 드라이버를 설치합니다.
자세한 내용은 SQL Server Native Client에 연결 문자열 키워드 사용, Release Notes for ODBC to SQL Server on Windows (V17)(Windows의 SQL Server(V17)용 ODBC 릴리스 노트) 및 Windows의 Microsoft SQL Server(V13, 11)용 Microsoft ODBC 드라이버의 기능을 참조하세요.
ODBC 드라이버 |
버전 |
다운로드 |
새 기능 |
ODBC 드라이버 17.0 ~ 17.3 |
SQL Server 2017 |
ODBC 드라이버 17.3 ODBC 드라이버에서 Azure Active Directory 사용 항상 암호화를 사용하는 경우 ODBC 드라이버의 제한 사항 ODBC 드라이버 17.2 SQL Server용 ODBC 드라이버에 항상 암호화 사용 ODBC 드라이버 17.1 SQL Server용 ODBC 드라이버에 항상 암호화 사용 ODBC 드라이버 17.0 UseFMTONLY 임시 테이블이 필요한 특수한 경우에 레거시 메타 데이터를 사용. Release Notes for ODBC to SQL Server on Windows(Windows의 SQL Server용 ODBC 릴리스 노트)를 참조하세요. |
|
ODBC 드라이버 13.1 |
SQL Server 2016 SP1, SQL Azure |
||
ODBC 드라이버 13.0 |
SQL Server 2016 |
IDN(Internationalized Domain Name) |
|
ODBC 드라이버 11.0 |
SQL Server 2005 ~ 2012 |
OLE DB 공급자 버전 요약
다음 표에서는 OLE DB 공급자 버전, 다운로드 위치 및 기능 지원에 대한 중요한 정보를 요약합니다. Office가 아니라, Windows를 기반으로 하는 올바른 비트 버전(64비트 또는 32비트)의 드라이버를 사용해야 합니다. 64비트 Windows에서 32비트 Access를 실행하는 경우, Access에 필요한 32비트 구성 요소가 포함된 64비트 드라이버를 설치합니다.
자세한 내용은 SQL Server 네이티브 클라이언트에 연결 문자열 키워드 사용을참조하세요.
OLE DB 공급자 |
버전 |
다운로드 |
새 기능 |
OLE DB 드라이버 18.2.1 (MSOLEDBSQL) |
SQL Server 2017 |
OLE DB Driver for SQL Server Feature(SQL Server용 OLE DB 드라이버 기능) 및 Release notes for the Microsoft OLE DB Driver, for SQL Server(SQL Server용 Microsoft OLE DB 드라이버의 릴리스 노트)를 참조하세요. |
|
SQL Server Native Client(SQLNCLI) |
SQL Server 2005 ~ 2012 |
사용되지 않음, 사용 안 함 |
|
OLE DB 드라이버(SQLOLEDB) |
사용되지 않음, 사용 안 함 |
ODBC 키워드 요약
다음 표에는 SQL Server에서 인식하는 ODBC 키워드와 해당 용도가 요약되어 있습니다. 하위 집합만 Access에서 인식할 수 있습니다.
키워드 |
설명 |
Addr |
SQL Server 인스턴스를 실행하는 서버의 네트워크 주소입니다. |
AnsiNPW |
NULL 비교, 문자 데이터 패딩, 경고 및 NULL 연결을 처리(예 또는 아니요)하기 위한 ANSI 정의 동작의 사용을 지정합니다. |
앱 |
SQLDriverConnect를 호출하는 응용 프로그램 이름입니다. |
ApplicationIntent |
서버에 연결하는 경우 응용 프로그램 워크로드 유형(ReadOnly 또는 ReadWrite)을 선언합니다. |
AttachDBFileName |
첨부 가능한 데이터베이스의 기본 파일 이름. |
AutoTranslate |
ANSI 문자열을 클라이언트나 서버 사이에 전송하고 유니코드로 변환할지(예 또는 아니요)를 지정합니다. |
데이터베이스 |
데이터베이스 이름입니다. 설명 연결 목적. 드라이버 SQLDrivers에서 반환되는 드라이버의 이름입니다. |
DSN |
기존 ODBC 사용자 또는 시스템 데이터 원본의 이름입니다. 암호화 네트워크를 통해 보내기 전에 데이터를 암호화해야 하는지(예 또는 아니요)를 지정합니다. |
Failover_Partner |
주 서버에 연결할 수 없는 경우 사용할 장애 조치 파트너 서버 이름입니다. |
FailoverPartnerSPN |
장애 조치 파트너의 SPN입니다. |
Fallback |
사용되지 않는 키워드입니다. |
FileDSN |
기존 ODBC 파일 데이터 원본 이름입니다. 언어 SQL Server 언어입니다. |
MARS_Connection |
SQL Server 2005(9.x) 이상 버전 연결 시 여러 개의 활성 결과 집합(MARS)을 지정합니다(예 또는 아니요). |
MultiSubnetFailover |
SQL Server 가용성 그룹이나 장애 조치 인스턴스의 가용성 그룹 리스너에 연결할지(예 또는 아니요)를 지정합니다. |
Net |
dbnmpntw는 명명된 파이프를 나타내고 dbmssocn는 TCP/IP를 나타냅니다. |
PWD |
SQL Server 로그인 암호입니다. |
QueryLog_On |
실행 시간이 긴 쿼리의 로깅(예 또는 아니요)을 지정합니다. |
QueryLogFile |
장기 실행 쿼리의 데이터를 기록하는 데 사용할 파일의 전체 경로와 파일 이름입니다. |
QueryLogTime |
장기 실행 쿼리를 기록하기 위한 임계값(밀리초)을 지정하는 숫자 문자열입니다. |
QuotedId |
SQL Server가 SQL 문에 인용 부호를 사용하는 것과 관련하여 ISO 규칙을 사용하는지(예 또는 아니요)를 지정합니다. |
지역 |
통화, 날짜 또는 시간 데이터를 문자 데이터로 변환할 때 SQL Server Native Client ODBC 드라이버가 클라이언트 설정을 사용하는지(예 또는 아니요)를 지정합니다. |
SaveFile |
연결이 성공한 경우 현재 연결의 특성이 저장되는 ODBC 데이터 원본 파일의 이름입니다. |
서버 |
SQL Server 인스턴스의 이름: 네트워크의 서버, IP 주소 또는 Configuration Manager 별칭입니다. |
ServerSPN |
서버의 SPN입니다. |
StatsLog_On |
SQL Server 네이티브 클라이언트 ODBC 드라이버 성능 데이터를 캡처할 수 있습니다. |
StatsLogFile |
SQL Server 네이티브 클라이언트 ODBC 드라이버 성능 통계를 기록하는 데 사용되는 파일의 전체 경로와 파일 이름입니다. |
Trusted_Connection |
로그인 유효성 검사에 Windows 인증 모드 또는 SQL Server 사용자 이름 또는 암호를 사용할지(예 또는 아니요)를 지정합니다. |
TrustServerCertificate |
암호화를 사용하는 경우 자체 서명된 서버 인증서를 사용하여 암호화를 사용할 수 있습니다. |
UID |
SQL Server 로그인 이름입니다. |
UseProcForPrepare |
사용되지 않는 키워드입니다. |
WSID |
응용 프로그램이 있는 컴퓨터의 네트워크 이름인 워크스테이션 ID입니다. |
OLE DB 키워드 요약
다음 표에는 SQL Server에서 인식하는 OLE DB 키워드와 해당 용도가 요약되어 있습니다. 하위 집합만 Access에서 인식할 수 있습니다.
키워드 |
설명 |
Addr |
SQL Server 인스턴스를 실행하는 서버의 네트워크 주소입니다. |
앱 |
응용 프로그램을 식별하는 문자열입니다. |
ApplicationIntent |
서버에 연결하는 경우 응용 프로그램 워크로드 유형(ReadOnly 또는 ReadWrite)을 선언합니다. |
AttachDBFileName |
첨부 가능한 데이터베이스의 기본 파일 이름. |
AutoTranslate |
OEM/ANSI 문자 변환(True 또는 False)을 구성합니다. |
연결 시간 제한 |
데이터 원본 초기화가 완료 될 때까지 대기하는 시간(초)입니다. |
현재 언어 |
SQL Server 언어 이름입니다. |
데이터 원본 |
조직에 있는 SQL Server 인스턴스의 이름입니다. |
데이터베이스 |
데이터베이스 이름입니다. |
DataTypeCompatibility |
사용할 데이터 형식 처리 모드를 나타내는 숫자입니다. |
암호화 |
네트워크를 통해 보내기 전에 데이터를 암호화해야 하는지(예 또는 아니요)를 지정합니다. |
FailoverPartner |
데이터베이스 미러링에 사용되는 장애 조치 서버 이름입니다. |
FailoverPartnerSPN |
장애 조치 파트너의 SPN입니다. |
초기 카탈로그 |
데이터베이스 이름입니다. |
초기 파일 이름 |
첨부 가능한 데이터베이스의 기본 파일 이름 (전체 경로 이름 포함)입니다. |
통합 보안 |
Windows 인증(SSPI)에 사용됩니다. |
언어 |
SQL Server 언어입니다. |
MarsConn |
SQL Server 2005(9.x) 이상 버전 연결 시 여러 개의 활성 결과 집합(MARS)을 지정합니다(예 또는 아니요). |
Net |
조직 내 SQL Server 인스턴스에 연결을 설정하는 데 사용되는 네트워크 라이브러리입니다. |
네트워크 주소 |
조직 내 SQL Server 인스턴스의 네트워크 주소입니다. |
PacketSize |
네트워크 패킷 크기. 기본값은 4096입니다. |
보안 정보 유지 |
보안 유지를 사용할지(True 또는 False)를 지정합니다. |
PersistSensitive |
중요 유지를 사용할지(True 또는 False)를 지정합니다. |
공급자 |
SQL Server Native Client의 경우 SQLNCLI11이어야 합니다. |
PWD |
SQL Server 로그인 암호입니다. |
서버 |
SQL Server 인스턴스의 이름: 네트워크의 서버, IP 주소 또는 Configuration Manager 별칭입니다. |
ServerSPN |
서버의 SPN입니다. |
시간 제한 |
데이터 원본 초기화가 완료 될 때까지 대기하는 시간(초)입니다. |
Trusted_Connection |
로그인 유효성 검사에 Windows 인증 모드 또는 SQL Server 사용자 이름 또는 암호를 사용할지(예 또는 아니요)를 지정합니다. |
TrustServerCertificate |
서버 인증서의 유효성을 검사할지(True 또는 False)를 지정합니다. |
UID |
SQL Server 로그인 이름입니다. |
데이터에 암호화 사용 |
네트워크를 통해 보내기 전에 데이터를 암호화해야 하는지(True 또는 False)를 지정합니다. |
UseProcForPrepare |
사용되지 않는 키워드입니다. |
WSID |
응용 프로그램이 있는 컴퓨터의 네트워크 이름인 워크스테이션 ID입니다. |