Informacje o nagłówku i wersji usługi SQL Server Express LocalDB
Dotyczy:programu SQL Server
Nie ma oddzielnego pliku nagłówka dla interfejsu API wystąpienia usługi SQL Server Express LocalDB; Sygnatury funkcji LocalDB i kody błędów są zdefiniowane w pliku nagłówka microsoft OLE DB driver for SQL Server (msoledbsql.h). Aby użyć interfejsu API wystąpienia bazy danych LocalDB, należy uwzględnić plik nagłówka msoledbsql.h w projekcie. Ten dokument został niedawno zaktualizowany i nie odwołuje się już do pliku nagłówka klienta natywnego programu SQL Server (sqlncli.h).
Przechowywanie wersji bazy danych LocalDB
Instalacja bazy danych LocalDB używa jednego zestawu plików binarnych na główną wersję programu SQL Server. Te wersje bazy danych LocalDB są obsługiwane i poprawiane niezależnie. Oznacza to, że użytkownik musi określić, której wersji bazowej bazy danych LocalDB (czyli głównej wersji programu SQL Server) będą używać. Wersja jest określona w standardowym formacie wersji zdefiniowanym przez klasę .NET Framework
główna.pomocnicza[.build[.revision]]
Pierwsze dwie liczby w ciągu wersji (główne i pomocnicze) są obowiązkowe. Ostatnie dwie liczby w ciągu wersji (kompilacji i poprawki) są opcjonalne i domyślne do zera, jeśli użytkownik je opuści. Oznacza to, że jeśli użytkownik określa tylko "12.2" jako numer wersji bazy danych LocalDB, będzie traktowany tak, jakby użytkownik określił wartość "12.2.0.0".
Wersja instalacji bazy danych LocalDB jest zdefiniowana w kluczu rejestru MSSQLServer\CurrentVersion
w kluczu rejestru wystąpienia programu SQL Server, na przykład:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Wiele wersji bazy danych LocalDB na tej samej stacji roboczej jest obsługiwanych obok siebie. Jednak kod użytkownika zawsze używa najnowszej dostępnej biblioteki SQLUserInstance DLL na komputerze lokalnym w celu nawiązania połączenia z wystąpieniami usługi LocalDB.
Lokalizowanie biblioteki DLL SQLUserInstance
Aby zlokalizować bibliotekę DLL SQLUserInstance, dostawca klienta używa następującego klucza rejestru:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
W tym kluczu znajduje się lista kluczy, po jednym dla każdej wersji bazy danych LocalDB zainstalowanej na komputerze. Każdy z tych kluczy ma nazwę z numerem wersji bazy danych LocalDB w formacie <wersji głównej>.<wersji pomocniczej> (na przykład klucz dla programu SQL Server 2014 (12.x) nosi nazwę 13.0). W każdym kluczu wersji istnieje para InstanceAPIPath
nazwa-wartość, która definiuje pełną ścieżkę do pliku SQLUserInstance.dll zainstalowanego z tą wersją. W poniższym przykładzie przedstawiono wpisy rejestru dla komputera z zainstalowaną bazą danych LocalDB w wersji 11.0 i 13.0:
[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"
[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"
Dostawca klienta musi znaleźć najnowszą wersję wśród wszystkich zainstalowanych wersji i załadować plik DLL SQLUserInstance ze skojarzonej wartości InstanceAPIPath
.
Tryb WOW64 w 64-bitowym systemie Windows
Instalacje 64-bitowe bazy danych LocalDB będą miały dodatkowy zestaw kluczy rejestru, aby umożliwić korzystanie z bazy danych LocalDB w trybie 32-bitowym systemu Windows-32-on-Windows-64 (WOW64). W szczególności w 64-bitowym systemie Windows plik MSI bazy danych LocalDB utworzy następujące klucze rejestru:
[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"
64-bitowe programy odczytujące klucz
Korzystanie z LOCALDB_DEFINE_PROXY_FUNCTIONS
Interfejs API wystąpienia usługi LocalDB definiuje stałą o nazwie LOCALDB_DEFINE_PROXY_FUNCTIONS, która automatyzuje odnajdywanie i ładowanie biblioteki DLL SqlUserInstance.
Sekcja kodu włączona przez tę stałą zawiera implementację serwerów proxy dla każdego z interfejsów API bazy danych LocalDB. Implementacje serwera proxy używają wspólnej funkcji do powiązania z punktami wejścia w najnowszej zainstalowanej sqlUserInstance DLL, a następnie prześlij żądania dalej.
Funkcje serwera proxy są włączone tylko wtedy, gdy stała LOCALDB_DEFINE_PROXY_FUNCTIONS jest zdefiniowana w kodzie użytkownika przed dołączeniem pliku msoledbsql.h. Stała powinna być zdefiniowana tylko w jednym module źródłowym (.cpp pliku), ponieważ definiuje nazwy funkcji zewnętrznych dla wszystkich punktów wejścia interfejsu API. Zapewnia implementację serwerów proxy dla każdego z interfejsów API bazy danych LocalDB.
W poniższym przykładzie kodu pokazano, jak używać makra z natywnego kodu 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)))
{
...
}
...