Dela via


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)))  
{  
...  
}  
...