다음을 통해 공유


SQL Server Express LocalDB 헤더 및 버전 정보

Applies to:SQL Server

SQL Server Express LocalDB 인스턴스 API에 대한 별도의 헤더 파일은 없습니다. LocalDB 함수 서명 및 오류 코드는 Microsoft OLE DB Driver for SQL Server 헤더 파일(msoledbsql.h)에 정의되어 있습니다. LocalDB 인스턴스 API를 사용하려면 프로젝트에 헤더 파일을 포함 msoledbsql.h 해야 합니다. 이 문서에서는 더 이상 SQL Server Native Client 헤더 파일(sqlncli.h)을 참조하지 않습니다.

LocalDB versioning

LocalDB 설치는 주 SQL Server 버전당 단일 이진 파일 집합을 사용합니다. 이러한 LocalDB 버전은 독립적으로 유지 관리 및 패치됩니다. 즉, 사용자가 사용 중인 LocalDB 기준 릴리스(즉, 주요 SQL Server 버전)를 지정해야 합니다. 버전은 .NET Framework System.Version 클래스에서 정의한 표준 버전 형식으로 지정됩니다.

<major>.<minor>[.<build>[.<revision>]]

버전 문자열<major> (및 <minor>)의 처음 두 숫자는 필수입니다. 버전 문자열(<build><revision>)의 마지막 두 숫자는 선택 사항이며 사용자가 0으로 유지되는 경우 기본값은 0입니다. 즉, 사용자가 LocalDB 버전 번호로만 12.2 지정하면 사용자가 지정한 것처럼 처리됩니다 12.2.0.0.

LocalDB 설치 버전은 SQL Server 인스턴스 레지스트리 키 아래의 레지스트리 키에 정의 MSSQLServer\CurrentVersion 됩니다. 예를 들면 다음과 같습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"

동일한 워크스테이션에서 여러 LocalDB 버전을 함께 설치할 수 있습니다. 그러나 사용자 코드는 항상 로컬 컴퓨터에서 사용 가능한 SQLUserInstance 최신 DLL을 사용하여 LocalDB 인스턴스에 연결합니다.

SQLUserInstance DLL 찾기

DLL을 SQLUserInstance 찾기 위해 클라이언트 공급자는 다음 레지스트리 키를 사용합니다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]

이 키 아래에는 컴퓨터에 설치된 LocalDB의 각 버전에 대해 하나씩 키 목록이 있습니다. 이러한 각 키의 이름은 LocalDB 버전 번호 형식 <major-version>으로 지정됩니다. <minor-version> 예를 들어 SQL Server 2014(12.x)의 키 이름은 13.0입니다. 각 버전 키에는 해당 버전과 함께 설치된 파일의 InstanceAPIPath 전체 경로를 SQLUserInstance.dll 정의하는 이름-값 쌍이 있습니다. 다음 예제에서는 LocalDB 버전 11.0 및 13.0이 설치된 컴퓨터에 대한 레지스트리 항목을 보여줍니다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\11.0]
"InstanceAPIPath"="C:\\Program Files\\Microsoft SQL Server\\110\\LocalDB\\Binn\\SqlUserInstance.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\13.0]
"InstanceAPIPath"="C:\\Program Files\\Microsoft SQL Server\\130\\LocalDB\\Binn\\SqlUserInstance.dll"

클라이언트 공급자는 설치된 모든 버전 중에서 최신 버전을 찾고 연결된 InstanceAPIPath 값에서 DLL 파일을 로드 SQLUserInstance 해야 합니다.

64비트 Windows의 WOW64 모드

LocalDB의 64비트 설치에는 Windows-32-on-Windows-64(WOW64) 모드에서 실행되는 32비트 애플리케이션이 LocalDB를 사용할 수 있도록 추가 레지스트리 키 집합이 있습니다. 특히 64비트 Windows에서 LocalDB MSI는 다음 레지스트리 키를 만듭니다.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow6432Node\Microsoft SQL Server Local DB\Installed Versions\13.0]
"InstanceAPIPath"="C:\\Program Files (x86)\\Microsoft SQL Server\\130\\LocalDB\\Binn\\SqlUserInstance.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow6432Node\Microsoft SQL Server Local DB\Installed Versions\13.0]
"InstanceAPIPath"="C:\\Program Files (x86)\\Microsoft SQL Server\\130\\LocalDB\\Binn\\SqlUserInstance.dll"

키를 읽 Installed Versions 는 64비트 프로그램은 64비트 버전의 SQLUserInstance DLL을 가리키는 값을 표시하고, 32비트 프로그램(WOW64 모드에서 64비트 Windows에서 실행)은 하이브 아래에 Wow6432Node 있는 키로 Installed Versions 자동으로 리디렉션됩니다. 이 키에는 32비트 버전의 DLL을 가리키는 값이 SQLUserInstance 포함되어 있습니다.

Use LOCALDB_DEFINE_PROXY_FUNCTIONS

LocalDB 인스턴스 API는 DLL의 검색 및 로드를 자동화하는 명명된 LOCALDB_DEFINE_PROXY_FUNCTIONS 상수를 SqlUserInstance 정의합니다.

이 상수에서 사용하도록 설정된 코드 섹션에서는 각 LocalDB API에 대한 프록시 구현을 제공합니다. 프록시 구현은 공통 함수를 사용하여 최신 설치된 DLL의 진입점에 바인딩한 SqlUserInstance 다음 요청을 전달합니다.

프록시 함수는 msoledbsql.h 파일을 포함하기 전에 상수가 LOCALDB_DEFINE_PROXY_FUNCTIONS 사용자 코드에 정의된 경우에만 사용하도록 설정됩니다. 이 상수는 모든 API 진입점에 대해 외부 함수 이름을 정의하기 때문에 원본 모듈(.cpp file) 하나에만 정의해야 합니다. 각 LocalDB API에 대한 프록시 구현을 제공합니다.

다음 코드 예제에서는 네이티브 C++ 코드에서 매크로를 사용하는 방법을 보여줍니다.

// Define the LOCALDB_DEFINE_PROXY_FUNCTIONS constant to enable the LocalDB proxy functions
// The #define has to take place BEFORE the API header file (msoledbsql.h) is included
#define LOCALDB_DEFINE_PROXY_FUNCTIONS
#include <msoledbsql.h>
...
HRESULT hr = S_OK;

// Create LocalDB instance by calling the create API proxy function included by macro
if (FAILED(hr = LocalDBCreateInstance( L"12.0", L"name", 0)))
{
...
}
...