SQL Server Express LocalDB-huvud och versionsinformation
gäller för:SQL Server
Det finns ingen separat rubrikfil för SQL Server Express LocalDB-instans-API:et. LocalDB-funktionssignaturer och felkoder definieras i Microsoft OLE DB-drivrutinen för SQL Server-huvudfilen (msoledbsql.h). Om du vill använda LocalDB-instans-API:et måste du inkludera huvudfilen msoledbsql.h i projektet. Det här dokumentet har nyligen uppdaterats och refererar inte längre till den interna SQL Server-klienthuvudfilen (sqlncli.h).
LocalDB-versionshantering
LocalDB-installationen använder en enda uppsättning binärfiler per större SQL Server-version. Dessa LocalDB-versioner underhålls och korrigeras oberoende av varandra. Det innebär att användaren måste ange vilken LocalDB-baslinjeversion (d.v.s. huvudversion av SQL Server) som ska användas. Versionen anges i standardversionsformatet som definieras av klassen .NET Framework System.Version:
major.minor[.build[.revision]]
De första två talen i versionssträngen (större och mindre) är obligatoriska. De två sista talen i versionssträngen (skapa och revision) är valfria och standardvärdet är noll om användaren utelämnar dem. Det innebär att om användaren endast anger "12.2" som LocalDB-versionsnummer behandlas det som om användaren angav "12.2.0.0".
Versionen för LocalDB-installationen definieras i MSSQLServer\CurrentVersion
registernyckeln under SQL Server-instansens registernyckel, till exempel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Flera LocalDB-versioner på samma arbetsstation stöds sida vid sida. Användarkoden använder dock alltid den senaste tillgängliga SQLUserInstance DLL på den lokala datorn för att ansluta till LocalDB-instanser.
Hitta SQLUserInstance DLL
För att hitta SQLUserInstance- DLL använder klientprovidern följande registernyckel:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
Under den här nyckeln finns en lista över nycklar, en för varje version av LocalDB som är installerad på datorn. Var och en av dessa nycklar namnges med LocalDB-versionsnumret i formatet <>.<> (till exempel nyckeln för SQL Server 2014 (12.x) heter 13.0). Under varje versionsnyckel finns ett InstanceAPIPath
namn/värde-par som definierar den fullständiga sökvägen till den SQLUserInstance.dll fil som är installerad med den versionen. I följande exempel visas registerposterna för en dator med LocalDB-versionerna 11.0 och 13.0 installerade:
[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"
Klientprovidern måste hitta den senaste versionen bland alla installerade versioner och läsa in SQLUserInstance- DLL-fil från det associerade InstanceAPIPath
-värdet.
WOW64-läge på 64-bitars Windows
64-bitarsinstallationer av LocalDB har ytterligare en uppsättning registernycklar som gör att 32-bitarsprogram som körs i Windows-32-on-Windows-64-läge (WOW64) kan använda LocalDB. I 64-bitars Windows skapar LocalDB MSI följande registernycklar:
[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-bitarsprogram som läser Installed Versions
-nyckeln ser värden som pekar på 64-bitarsversioner av SQLUserInstance DLL, medan 32-bitarsprogram (körs på 64-bitars Windows i WOW64-läge) omdirigeras automatiskt till en Installed Versions
nyckel som finns under Wow6432Node
hive. Den här nyckeln innehåller värden som pekar på 32-bitarsversioner av SQLUserInstance DLL.
Använda LOCALDB_DEFINE_PROXY_FUNCTIONS
LocalDB-instans-API:et definierar en konstant med namnet LOCALDB_DEFINE_PROXY_FUNCTIONS som automatiserar identifieringen och inläsningen av SqlUserInstance DLL.
Det kodavsnitt som aktiveras av den här konstanten innehåller en implementering av proxyservrar för vart och ett av LocalDB-API:erna. Proxyimplementeringarna använder en gemensam funktion för att binda till startpunkter i den senaste installerade SqlUserInstance DLL och sedan vidarebefordra begäranden.
Proxyfunktionerna aktiveras endast om konstanten LOCALDB_DEFINE_PROXY_FUNCTIONS definieras i användarkoden innan filen msoledbsql.h inkluderas. Konstanten ska bara definieras i en källmodul (.cpp fil) eftersom den definierar externa funktionsnamn för alla API-startpunkter. Den tillhandahåller en implementering av proxyservrar för vart och ett av LocalDB-API:erna.
I följande kodexempel visas hur du använder makrot från den interna C++-koden:
// 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)))
{
...
}
...