Informações de cabeçalho e versão do SQL Server Express LocalDB
Aplica-se a:SQL Server
Não há nenhum arquivo de cabeçalho separado para a API de instância LocalDB do SQL Server Express; as assinaturas de função LocalDB e códigos de erro são definidos no arquivo de cabeçalho Microsoft OLE DB Driver for SQL Server (msoledbsql.h). Para usar a API de instância LocalDB, você deve incluir o arquivo de cabeçalho msoledbsql.h em seu projeto. Este documento foi atualizado recentemente e não faz mais referência ao arquivo de cabeçalho do SQL Server Native Client (sqlncli.h).
Controle de versão do LocalDB
A instalação do LocalDB usa um único conjunto de binários por versão principal do SQL Server. Essas versões do LocalDB são mantidas e corrigidas independentemente. Isso significa que o usuário precisa especificar qual versão de linha de base do LocalDB (ou seja, a versão principal do SQL Server) será usada. A versão é especificada no formato de versão padrão definido pelo .NET Framework classe de System.Version:
major.minor[.build[.revision]]
Os dois primeiros números na cadeia de caracteres da versão ( maior e menor ) são obrigatórios. Os dois últimos números na cadeia de caracteres de versão (compilação e revisão) são opcionais e padrão para zero se o usuário os deixar de fora. Isso significa que, se o usuário especificar apenas "12.2" como o número da versão do LocalDB, ele será tratado como se o usuário especificasse "12.2.0.0".
A versão para a instalação do LocalDB é definida na chave do Registro MSSQLServer\CurrentVersion
na chave do Registro da instância do SQL Server, por exemplo:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13E.LOCALDB\ MSSQLServer\CurrentVersion: "CurrentVersion"="12.0.2531.0"
Várias versões do LocalDB na mesma estação de trabalho são suportadas lado a lado. No entanto, o código do usuário sempre usa o mais recente disponível SQLUserInstance DLL no computador local para se conectar a instâncias LocalDB.
Localizando a DLL SQLUserInstance
Para localizar o SQLUserInstance DLL, o provedor de cliente usa a seguinte chave do Registro:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions]
Sob essa chave, há uma lista de chaves, uma para cada versão do LocalDB instalada no computador. Cada uma dessas chaves é nomeada com o número de versão do LocalDB no formato <versão principal>.<> de versão secundária (por exemplo, a chave do SQL Server 2014 (12.x) é denominada 13.0). Em cada chave de versão, há um par nome-valor InstanceAPIPath
que define o caminho completo para o arquivo SQLUserInstance.dll instalado com essa versão. O exemplo a seguir mostra as entradas do Registro para um computador que tem o LocalDB versões 11.0 e 13.0 instalado:
[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"
O provedor de cliente deve encontrar a versão mais recente entre todas as versões instaladas e carregar o arquivo SQLUserInstance DLL do valor de InstanceAPIPath
associado.
Modo WOW64 no Windows de 64 bits
As instalações de 64 bits do LocalDB terão um conjunto adicional de chaves do Registro para permitir que aplicativos de 32 bits executados no modo Windows-32-on-Windows-64 (WOW64) usem o LocalDB. Especificamente, no Windows de 64 bits, o LocalDB MSI criará as seguintes chaves do Registro:
[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"
Os programas de 64 bits que lerem a chave Installed Versions
verão valores apontando para versões de 64 bits da SQLUserInstance DLL, enquanto os programas de 32 bits (executados no Windows de 64 bits no modo WOW64) serão automaticamente redirecionados para uma chave Installed Versions
localizada sob a Wow6432Node
colmeia. Essa chave contém valores que apontam para versões de 32 bits da SQLUserInstance DLL.
Usando LOCALDB_DEFINE_PROXY_FUNCTIONS
A API de instância LocalDB define uma constante chamada LOCALDB_DEFINE_PROXY_FUNCTIONS que automatiza a descoberta e o carregamento da SqlUserInstance DLL.
A seção de código habilitada por essa constante fornece uma implementação de proxies para cada uma das APIs do LocalDB. As implementações de proxy usam uma função comum para vincular a pontos de entrada no instalado mais recente SqlUserInstance DLL e, em seguida, encaminhar as solicitações.
As funções de proxy são habilitadas somente se a constante LOCALDB_DEFINE_PROXY_FUNCTIONS for definida no código do usuário antes de incluir o arquivo msoledbsql.h. A constante deve ser definida em apenas um módulo de origem (arquivo .cpp) porque define nomes de funções externas para todos os pontos de entrada da API. Ele fornece uma implementação de proxies para cada uma das APIs do LocalDB.
O exemplo de código a seguir mostra como usar a macro do código C++ nativo:
// 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)))
{
...
}
...