Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es gibt keine separate Headerdatei für die SQL Server Express LocalDB-Instanz-API. Die Signaturen und Fehlercodes der LocalDB-Funktion sind in der SQL Server Native Client-Headerdatei (sqlncli.h) definiert. Zur Verwendung der LocalDB-Instanz-API müssen Sie die Headerdatei sqlncli.h in das Projekt einfügen.
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 in der .NET Framework System.Version-Klasse definiert ist :
major.minor[.build[.revision]]
Die ersten zwei Zahlen in der Versionszeichenfolge sind (major und minor) erforderlich. Die letzten zwei Zahlen in der Versionszeichenfolge (build und revision) sind optional und werden standardmäßig auf 0 (null) gesetzt, wenn der Benutzer sie auslässt. Wenn der Benutzer nur "11.2" als LocalDB-Versionsnummer angibt, wird diese behandelt, als ob er "11.2.0.0" angegeben hätte.
Die Version für die LocalDB-Installation ist im Registrierungsschlüssel MSSQLServer\CurrentVersion unter dem SQL Server-Instanz-Registrierungsschlüssel definiert. Beispiel:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\ MSSQLServer\CurrentVersion: “CurrentVersion”=”10.0.2531.0”
Mehrere LocalDB-Versionen auf derselben Arbeitsstation werden gleichzeitig unterstützt. Im Benutzercode wird jedoch immer die letzte verfügbare SQLUserInstance-DLL auf dem lokalen Computer zum Herstellen einer Verbindung mit LocalDB-Instanzen verwendet.
Suchen der SQLUserInstance-DLL
Zur Suche nach der SQLUserInstance-DLL 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 <major-version><minor-version> benannt (der Schlüssel für SQL Server 2012 wird beispielsweise mit 11.0 benannt). 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. Im folgenden Beispiel werden die Registrierungseinträge für einen Computer gezeigt, auf dem die LocalDB-Versionen 11.0 und 12.0 installiert sind:
[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\12.0]
"InstanceAPIPath"="C:\\Program Files\\Microsoft SQL Server\\120\\LocalDB\\Binn\\SqlUserInstance.dll"]
Der Clientanbieter muss die neueste aller installierten Versionen suchen und die DLL-Datei SQLUserInstance vom 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\11.0]
"InstanceAPIPath"="C:\\Program Files (x86)\\Microsoft SQL Server\\110\\LocalDB\\Binn\\SqlUserInstance.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wow6432Node\Microsoft SQL Server Local DB\Installed Versions\12.0]
"InstanceAPIPath"="C:\\Program Files (x86)\\Microsoft SQL Server\\120\\LocalDB\\Binn\\SqlUserInstance.dll"]
64-Bit-Programme lesen den Installed Versions-Schlüssel und sehen Werte, die auf 64-Bit-Versionen der SQLUserInstance-DLL verweisen, während 32-Bit-Programme, die unter einem 64-Bit-Windows im WOW64-Modus ausgeführt werden, automatisch an einen Installed Versions-Schlüssel umgeleitet werden, der sich unter der Wow6432Node-Struktur befindet. 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 mit der Bezeichnung LOCALDB_DEFINE_PROXY_FUNCTIONS, die das Ermitteln 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, die an Einstiegspunkte in der neuesten installierten SqlUserInstance-DLL gebunden wird, und leiten dann die Anforderungen weiter.
Die Proxyfunktionen werden nur aktiviert, wenn die Konstante LOCALDB_DEFINE_PROXY_FUNCTIONS vor dem Einfügen der Datei sqlncli.h im Benutzercode definiert wurde. 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 (sqlncli.h) is included
#define LOCALDB_DEFINE_PROXY_FUNCTIONS
#include <sqlncli.h>
…
HRESULT hr = S_OK;
// Create LocalDB instance by calling the create API proxy function included by macro
if (FAILED(hr = LocalDBCreateInstance( L“11.0”, L“name”, 0)))
{
…
}
…