Partager via


Informations de version et d’en-tête SQL Server Express LocalDB

Applies to:SQL Server

Il n’existe aucun fichier d’en-tête distinct pour l’API d’instance SQL Server Express LocalDB ; Les signatures de fonction LocalDB et les codes d’erreur sont définis dans le fichier d’en-tête Microsoft OLE DB Driver pour SQL Server (msoledbsql.h). Pour utiliser l’API d’instance LocalDB, vous devez inclure le msoledbsql.h fichier d’en-tête dans votre projet. Cet article ne fait plus référence au fichier d’en-tête SQL Server Native Client (sqlncli.h).

LocalDB versioning

L'installation de LocalDB utilise un jeu unique de binaires par version principale de SQL Server. Ces versions de LocalDB sont conservées et des correctifs de logiciel sont appliqués indépendamment. Cela signifie que l’utilisateur doit spécifier la version de base de référence LocalDB (c’est-à-dire la version principale de SQL Server) qu’il utilise. La version est spécifiée au format de version standard défini par la classe .NET Framework System.Version :

<major>.<minor>[.<build>[.<revision>]]

Les deux premiers nombres de la chaîne de version (<major> et <minor>) sont obligatoires. Les deux derniers nombres de la chaîne de version (<build> et <revision>) sont facultatifs et la valeur par défaut est zéro si l’utilisateur les quitte. Cela signifie que si l’utilisateur spécifie uniquement 12.2 le numéro de version LocalDB, il est traité comme si l’utilisateur a spécifié 12.2.0.0.

La version de l’installation de LocalDB est définie dans la clé de MSSQLServer\CurrentVersion Registre sous la clé de Registre de l’instance SQL Server, par exemple :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"

Plusieurs versions de LocalDB sur la même station de travail sont prises en charge côte à côte. Toutefois, le code utilisateur utilise toujours la DLL disponible SQLUserInstance la plus récente sur l’ordinateur local pour se connecter aux instances LocalDB.

Rechercher la DLL SQLUserInstance

Pour localiser la SQLUserInstance DLL, le fournisseur client utilise la clé de Registre suivante :

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]

Sous cette clé, il existe une liste de clés, une pour chaque version de LocalDB installée sur l’ordinateur. Chacune de ces clés est nommée avec le numéro de version LocalDB au format <major-version>. <minor-version> (par exemple, la clé pour SQL Server 2014 (12.x) est nommée 13.0. Sous chaque clé de version, il existe une InstanceAPIPath paire nom-valeur qui définit le chemin complet du SQLUserInstance.dll fichier installé avec cette version. L’exemple suivant montre les entrées de Registre pour un ordinateur sur lequel LocalDB versions 11.0 et 13.0 sont installées :

[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"

Le fournisseur client doit trouver la dernière version parmi toutes les versions installées et charger le SQLUserInstance fichier DLL à partir de la valeur associée InstanceAPIPath .

Mode WOW64 sur Windows 64 bits

Les installations 64 bits de LocalDB ont un ensemble supplémentaire de clés de Registre pour permettre aux applications 32 bits s’exécutant en mode Windows-32-on-Windows-64 (WOW64) d’utiliser LocalDB. Plus précisément, sur Windows 64 bits, le MSI LocalDB crée les clés de Registre suivantes :

[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"

Les programmes 64 bits lisant la Installed Versions clé voient les valeurs pointant vers des versions 64 bits de la SQLUserInstance DLL, tandis que les programmes 32 bits (exécutés sur Windows 64 bits en mode WOW64) sont automatiquement redirigés vers une Installed Versions clé située sous la Wow6432Node ruche. Cette clé contient des valeurs pointant vers des versions 32 bits de la SQLUserInstance DLL.

Use LOCALDB_DEFINE_PROXY_FUNCTIONS

L’API d’instance LocalDB définit une constante nommée LOCALDB_DEFINE_PROXY_FUNCTIONS qui automatise la découverte et le chargement de la SqlUserInstance DLL.

La section de code activée par cette constante fournit une implémentation des proxys pour chacune des API de LocalDB. Les implémentations de proxy utilisent une fonction courante pour établir une liaison aux points d’entrée dans la DLL installée SqlUserInstance la plus récente, puis transférer les requêtes.

Les fonctions proxy sont activées uniquement si la constante LOCALDB_DEFINE_PROXY_FUNCTIONS est définie dans le code utilisateur avant d’inclure le fichier msoledbsql.h. La constante doit être définie dans un seul module source (fichier .cpp), car elle définit les noms de fonctions externes pour tous les points d'entrée d'API. Elle fournit une implémentation des proxys pour chacune des API de LocalDB.

L'exemple de code suivant montre comment utiliser la macro du code C++ natif :

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