Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Applies to:SQL Server
Er is geen afzonderlijk headerbestand voor de SQL Server Express LocalDB-exemplaar-API; de handtekeningen en foutcodes van de functie LocalDB worden gedefinieerd in het Microsoft OLE DB-stuurprogramma voor sql Server-headerbestand (msoledbsql.h). Als u de LocalDB-exemplaar-API wilt gebruiken, moet u het msoledbsql.h headerbestand in uw project opnemen. In dit artikel wordt niet meer verwezen naar het headerbestand van de SQL Server-client (sqlncli.h).
LocalDB versioning
De LocalDB-installatie maakt gebruik van één set binaire bestanden per primaire SQL Server-versie. Deze LocalDB-versies worden onafhankelijk onderhouden en gepatcht. Dit betekent dat de gebruiker moet opgeven welke LocalDB-basislijnrelease (dat wil zeggen primaire SQL Server-versie) die ze gebruiken. De versie wordt opgegeven in de standaardversieindeling die is gedefinieerd door de .NET Framework-klasse System.Version :
<major>.<minor>[.<build>[.<revision>]]
De eerste twee getallen in de versietekenreeks (<major> en <minor>) zijn verplicht. De laatste twee getallen in de versietekenreeks (<build> en <revision>) zijn optioneel en zijn standaard ingesteld op nul als de gebruiker deze weglaat. Dit betekent dat als de gebruiker alleen 12.2 opgeeft als het LocalDB-versienummer, het wordt behandeld alsof de gebruiker heeft opgegeven 12.2.0.0.
De versie voor de LocalDB-installatie wordt gedefinieerd in de MSSQLServer\CurrentVersion registersleutel onder de registersleutel van het SQL Server-exemplaar, bijvoorbeeld:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Meerdere LocalDB-versies op hetzelfde werkstation worden naast elkaar ondersteund. Gebruikerscode gebruikt echter altijd de meest recente beschikbare SQLUserInstance DLL op de lokale computer om verbinding te maken met LocalDB-exemplaren.
De DLL van SQLUserInstance zoeken
De clientprovider gebruikt de volgende registersleutel om het SQLUserInstance DLL-bestand te vinden:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
Onder deze sleutel staat een lijst met sleutels, één voor elke versie van LocalDB die op de computer is geïnstalleerd. Elk van deze sleutels heeft een naam met het LocalDB-versienummer in de notatie <major-version>.
<minor-version> (De sleutel voor SQL Server 2014 (12.x) heeft bijvoorbeeld de naam 13.0. Onder elke versiesleutel bevindt zich een InstanceAPIPath naam-waardepaar dat het volledige pad naar het SQLUserInstance.dll bestand definieert dat met die versie is geïnstalleerd. In het volgende voorbeeld ziet u de registervermeldingen voor een computer waarop LocalDB-versies 11.0 en 13.0 zijn geïnstalleerd:
[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"
De clientprovider moet de meest recente versie vinden in alle geïnstalleerde versies en het SQLUserInstance DLL-bestand laden vanuit de bijbehorende InstanceAPIPath waarde.
WOW64-modus op 64-bits Windows
64-bits installaties van LocalDB hebben een extra set registersleutels om 32-bits toepassingen die worden uitgevoerd in de Modus Windows-32-on-Windows-64 (WOW64) toe te staan om LocalDB te gebruiken. Met name in 64-bits Windows maakt de LocalDB MSI de volgende registersleutels:
[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-bits programma's die de Installed Versions sleutel lezen, zien waarden die verwijzen naar 64-bits versies van het SQLUserInstance DLL-bestand, terwijl 32-bits programma's (uitgevoerd op 64-bits Windows in WOW64-modus) automatisch worden omgeleid naar een Installed Versions sleutel die zich onder de Wow6432Node hive bevindt. Deze sleutel bevat waarden die verwijzen naar 32-bits versies van het SQLUserInstance DLL-bestand.
Use LOCALDB_DEFINE_PROXY_FUNCTIONS
De LocalDB-exemplaar-API definieert een constante met de naam LOCALDB_DEFINE_PROXY_FUNCTIONS waarmee de detectie en het laden van het SqlUserInstance DLL-bestand wordt geautomatiseerd.
De codesectie die door deze constante is ingeschakeld, biedt een implementatie van proxy's voor elk van de LocalDB-API's. De proxy-implementaties gebruiken een algemene functie om verbinding te maken met toegangspunten in de meest recente geïnstalleerde SqlUserInstance DLL en de aanvragen vervolgens door te sturen.
De proxyfuncties zijn alleen ingeschakeld als de constante LOCALDB_DEFINE_PROXY_FUNCTIONS is gedefinieerd in de gebruikerscode voordat het bestand msoledbsql.h wordt opgenomen. De constante moet worden gedefinieerd in slechts één bronmodule (.cpp bestand), omdat hiermee externe functienamen voor alle API-toegangspunten worden gedefinieerd. Het biedt een implementatie van proxy's voor elk van de LocalDB-API's.
In het volgende codevoorbeeld ziet u hoe u de macro gebruikt vanuit de systeemeigen C++-code:
// 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)))
{
...
}
...