SQL Server Express LocalDB-Header und -Versionsinformationen
Gilt für: SQL Server
Es gibt keine separate Headerdatei für die SQL Server Express LocalDB-Instanz-API; Die LocalDB-Funktionssignaturen und Fehlercodes werden in der Microsoft OLE DB-Treiber für SQL Server Headerdatei (msoledbsql.h) definiert. Um die LocalDB-Instanz-API zu verwenden, müssen Sie die Headerdatei "msoledbsql.h" in Ihr Projekt einschließen. Dieses Dokument wurde kürzlich aktualisiert und verweist nicht mehr auf die SQL Server Native Client-Headerdatei (sqlncli.h).
LocalDB-Versionsverwaltung
Die LocalDB-Installation verwendet pro Haupt-SQL Server-Version einen einzelnen Satz Binärdateien. Diese LocalDB-Versionen werden gewartet und unabhängig gepatcht. Das bedeutet, dass der Benutzer angeben muss, welche LocalDB-Baselineversion (also Haupt-SQL Server-Version) er verwendet. Die Version wird im Standardversionsformat angegeben, das von der .NET Framework System.Version-Klasse definiert wird:
major.minor[.build[.revision]]
Die ersten beiden Nummern in der Versionszeichenfolge (Haupt - und Nebenwert) sind obligatorisch. Die letzten beiden Zahlen in der Versionszeichenfolge (Build und Revision) sind optional und standardmäßig null, wenn der Benutzer sie verlässt. Dies bedeutet, dass, wenn der Benutzer nur "12.2" als LocalDB-Versionsnummer angibt, so behandelt wird, als ob der Benutzer "12.2.0.0" angegeben hat.
Die Version für die LocalDB-Installation wird im MSSQLServer\CurrentVersion
Registrierungsschlüssel unter dem REGISTRIERUNGSschlüssel der SQL Server-Instanz definiert, z. B.:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Mehrere LocalDB-Versionen auf derselben Arbeitsstation werden gleichzeitig unterstützt. Der Benutzercode verwendet jedoch immer die neueste verfügbare SQLUserInstance-DLL auf dem lokalen Computer, um eine Verbindung mit LocalDB-Instanzen herzustellen.
Suchen der SQLUserInstance-DLL
Um die SQLUserInstance-DLL zu finden, verwendet der Clientanbieter den folgenden Registrierungsschlüssel:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
Unter diesem Schlüssel befindet sich eine Liste Schlüssel, einer für jede Version der auf dem Computer installierten LocalDB. Jeder dieser Schlüssel wird mit der LocalDB-Versionsnummer im Format <Hauptversion> benannt.<Nebenversion> (z. B. der Schlüssel für SQL Server 2014 (12.x) heißt 13.0. Unter jedem Versionsschlüssel dort ist ein InstanceAPIPath
-Name-Wert-Paar, das den vollständigen Pfad zur mit dieser Version installierten SQLUserInstance.dll-Datei definiert. Das folgende Beispiel zeigt die Registrierungseinträge für einen Computer, auf dem die LocalDB-Versionen 11.0 und 13.0 installiert sind:
[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"
Der Clientanbieter muss die neueste Version unter allen installierten Versionen finden und die SQLUserInstance-DLL-Datei aus dem zugeordneten InstanceAPIPath
Wert laden.
WOW64-Modus unter 64-Bit-Windows
64-Bit-Installationen von LocalDB weisen einen zusätzlichen Satz Registrierungsschlüssel auf, der 32-Bit-Anwendungen, die im WOW64 (Windows-32-on-Windows-64)-Modus ausgeführt werden, die Verwendung von LocalDB ermöglicht. Insbesondere unter 64-Bit-Windows erstellt LocalDB-MSI die folgenden Registrierungsschlüssel:
[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-Bit-Programme, die den Schlüssel lesen, sehen Werte, die Installed Versions
auf 64-Bit-Versionen der SQLUserInstance-DLL verweisen, während 32-Bit-Programme (unter 64-Bit-Windows im WOW64-Modus) automatisch an einen Installed Versions
Schlüssel unter der Wow6432Node
Struktur umgeleitet werden. Dieser Schlüssel enthält Werte, die auf 32-Bit-Versionen der SQLUserInstance-DLL verweisen.
Verwenden von LOCALDB_DEFINE_PROXY_FUNCTIONS
Die LocalDB-Instanz-API definiert eine Konstante namens LOCALDB_DEFINE_PROXY_FUNCTIONS, die die Ermittlung und das Laden der SqlUserInstance-DLL automatisiert.
Der durch diese Konstante aktivierte Abschnitt des Codes stellt eine Implementierung der Proxys für jede der LocalDB-APIs bereit. Die Proxyimplementierungen verwenden eine allgemeine Funktion, um eine Bindung an Einstiegspunkte in der neuesten installierten SQLUserInstance-DLL zu erstellen und dann die Anforderungen weiterzuleiten.
Die Proxyfunktionen sind nur aktiviert, wenn die Konstante LOCALDB_DEFINE_PROXY_FUNCTIONS im Benutzercode definiert ist, bevor die Datei "msoledbsql.h" eingeschlossen wird. Die Konstante darf in nur einem Quellenmodul (CPP-Datei) definiert werden, da sie externe Funktionsnamen für alle API-Einstiegspunkte definiert. Sie stellt eine Implementierung der Proxys für alle LocalDB-APIs bereit.
Im folgenden Codebeispiel wird gezeigt, wie das Makro vom systemeigenen C++-Code verwendet wird:
// 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)))
{
...
}
...
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für