Partager via


En-tête et informations de version de la base de données locale SQL Server Express

S’applique à : 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 fichier d’en-tête msoledbsql.h dans votre projet. Ce document a récemment été mis à jour et ne fait plus référence au fichier d’en-tête SQL Server Native Client (sqlncli.h).

Contrôle de version de LocalDB

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 LocalDB (autrement dit, la version principale de SQL Server) qu'il utilisera. 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 (principale et mineure) sont obligatoires. Les deux derniers nombres de la chaîne de version (build et révision) 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 » comme numéro de version LocalDB, il sera 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 SQLUserInstance disponible la plus récente sur l’ordinateur local pour se connecter aux instances LocalDB.

Recherche de la DLL SQLUserInstance

Pour localiser la DLL SQLUserInstance , 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 des 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.<>> version mineure (par exemple, la clé pour SQL Server 2014 (12.x) est nommée 13.0. Sous chaque clé de version il existe des paires nom-valeur de InstanceAPIPath qui définissent le chemin d'accès complet au fichier de SQLUserInstance.dll 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\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"   

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

Mode WOW64 sur Windows 64 bits

Les installations 64 bits de LocalDB ont un jeu 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. En particulier, sur Windows 64 bits, le fichier MSI de 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é verront les valeurs pointant vers des versions 64 bits de la DLL SQLUserInstance , tandis que les programmes 32 bits (exécutés sur Windows 64 bits en mode WOW64) seront 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 DLL SQLUserInstance .

Utilisation de 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 DLL SqlUserInstance .

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 SqlUserInstance installée 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)))  
{  
...  
}  
...