Informace o hlavičce a verzi SQL Serveru Express LocalDB
platí pro:SQL Server
Pro rozhraní API instance SQL Serveru Express LocalDB neexistuje žádný samostatný soubor hlaviček; Podpisy funkcí LocalDB a kódy chyb jsou definovány v souboru hlaviček serveru Microsoft OLE DB (msoledbsql.h). Pokud chcete použít rozhraní API instance LocalDB, musíte do projektu zahrnout soubor hlaviček msoledbsql.h. Tento dokument byl nedávno aktualizován a již odkazuje na soubor hlavičky nativního klienta SQL Serveru (sqlncli.h).
Správa verzí LocalDB
Instalace LocalDB používá jednu sadu binárních souborů na hlavní verzi SQL Serveru. Tyto verze LocalDB se udržují a opravují nezávisle. To znamená, že uživatel musí určit, kterou základní verzi LocalDB (tj. hlavní verze SQL Serveru), kterou bude používat. Verze je určena ve standardním formátu verze definovaném rozhraním .NET Framework System.Version třída:
major.minor[.build[.revision]]
První dvě čísla v řetězci verze (hlavní a podverze) jsou povinná. Poslední dvě čísla v řetězci verze (sestavení a revize) jsou volitelná a pokud je uživatel vynechá, výchozí hodnota je nula. To znamená, že pokud uživatel jako číslo verze LocalDB zadá jenom "12.2", bude považován za uživatele 12.2.0.0.
Verze instalace LocalDB je definována v klíči registru MSSQLServer\CurrentVersion
pod klíčem registru instance SQL Serveru, například:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Vedle sebe se podporuje více verzí LocalDB na stejné pracovní stanici. Uživatelský kód však vždy používá nejnovější dostupnou sqlUserInstance DLL v místním počítači pro připojení k instancím LocalDB.
Vyhledání knihovny DLL SQLUserInstance
K vyhledání knihovny DLL SQLUserInstance používá zprostředkovatel klienta následující klíč registru:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
Pod tímto klíčem je seznam klíčů, jeden pro každou verzi LocalDB nainstalované v počítači. Každý z těchto klíčů má název s číslem verze LocalDB ve formátu <hlavní verze>.<> podverze (například klíč pro SQL Server 2014 (12.x) má název 13.0). V každém klíči verze existuje dvojice InstanceAPIPath
název-hodnota, která definuje úplnou cestu k souboru SQLUserInstance.dll nainstalovanému s touto verzí. Následující příklad ukazuje položky registru pro počítač s nainstalovanou verzí LocalDB 11.0 a 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"
Zprostředkovatel klienta musí najít nejnovější verzi mezi všemi nainstalovanými verzemi a načíst soubor knihovny DLL SQLUserInstance DLL z přidružené hodnoty InstanceAPIPath
.
Režim WOW64 v 64bitovém systému Windows
64bitové instalace LocalDB budou mít další sadu klíčů registru, aby 32bitové aplikace spuštěné v režimu Windows-32-on-Windows-64 (WOW64) mohly používat LocalDB. Konkrétně v 64bitovém Systému Windows vytvoří MSI LocalDB následující klíče registru:
[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"
64bitové programy čtoucí klíč Installed Versions
uvidí hodnoty odkazující na 64bitové verze SQLUserInstance DLL, zatímco 32bitové programy (spuštěné v 64bitovém režimu Windows v režimu WOW64) se automaticky přesměrují na Installed Versions
klíč umístěný v podregistru Wow6432Node
. Tento klíč obsahuje hodnoty odkazující na 32bitové verze sqlUserInstance DLL.
Použití LOCALDB_DEFINE_PROXY_FUNCTIONS
Rozhraní API instance LocalDB definuje konstantu s názvem LOCALDB_DEFINE_PROXY_FUNCTIONS, která automatizuje zjišťování a načítání sqlUserInstance DLL.
Část kódu povolená touto konstantou poskytuje implementaci proxy pro každou z rozhraní API LocalDB. Implementace proxy serveru používají společnou funkci k vytvoření vazby na vstupní body v nejnovější nainstalované SqlUserInstance DLL a pak předávat požadavky.
Proxy funkce jsou povoleny pouze v případě, že konstanta LOCALDB_DEFINE_PROXY_FUNCTIONS je definována v uživatelském kódu před zahrnutím souboru msoledbsql.h. Konstanta by měla být definována pouze v jednom zdrojovém modulu (.cpp souboru), protože definuje názvy externích funkcí pro všechny vstupní body rozhraní API. Poskytuje implementaci proxy serverů pro každou z rozhraní API LocalDB.
Následující příklad kódu ukazuje, jak použít makro z nativního kódu 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)))
{
...
}
...