Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Applies to: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 msoledbsql.h måste du inkludera huvudfilen i projektet. Den här artikeln refererar inte längre till huvudfilen för den interna SQL Server-klienten (sqlncli.h).
LocalDB versioning
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 de använder. Versionen anges i standardversionsformatet som definieras av .NET Framework-klassen System.Version :
<major>.<minor>[.<build>[.<revision>]]
De första två talen i versionssträngen (<major> och <minor>) är obligatoriska. De två sista talen i versionssträngen (<build> och <revision>) är valfria och standardvärdet är noll om användaren utelämnar dem. Det innebär att om användaren endast 12.2 anger 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-filen på den lokala datorn för att ansluta till LocalDB-instanser.
Leta upp SQLUserInstance DLL
För att hitta SQLUserInstance DLL:en använder klientleverantören 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 <major-version>.
              <minor-version> (Till exempel heter nyckeln för SQL Server 2014 (12.x) 13.0). Under varje versionsnyckel finns ett InstanceAPIPath namn/värde-par som definierar den fullständiga sökvägen till filen som är installerad med den SQLUserInstance.dll 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\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"
Klientprovidern måste hitta den senaste versionen bland alla installerade versioner och läsa in SQLUserInstance DLL-filen från det associerade InstanceAPIPath värdet.
WOW64-läge på 64-bitars Windows
64-bitarsinstallationer av LocalDB har en extra 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-bitars versioner av SQLUserInstance DLL,medan 32-bitarsprogram (som körs på 64-bitars Windows i WOW64-läge) automatiskt omdirigeras till en Installed Versions nyckel som finns under Wow6432Node registreringsdatafilen. Den här nyckeln innehåller värden som pekar på 32-bitars versioner av DLL:en SQLUserInstance .
Use LOCALDB_DEFINE_PROXY_FUNCTIONS
LocalDB-instans-API:et definierar en konstant med namnet LOCALDB_DEFINE_PROXY_FUNCTIONS som automatiserar identifieringen och inläsningen av DLL:n SqlUserInstance .
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:n 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)))
{
...
}
...