SQL Server Express LocalDB ヘッダーとバージョン情報SQL Server Express LocalDB Header and Version Information

適用対象: ○SQL Server XAzure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server Express LocalDB インスタンス API には、独立したヘッダー ファイルはありません。LocalDB の関数署名とエラー コードは、SQL Server Native Client ヘッダー ファイル (sqlncli.h) に定義されています。There is no separate header file for the SQL Server Express LocalDB instance API; the LocalDB function signatures and error codes are defined in the SQL Server Native Client header file (sqlncli.h). LocalDB インスタンス API を使用するには、プロジェクトに sqlncli.h ヘッダー ファイルをインクルードする必要があります。To use the LocalDB instance API, you must include the sqlncli.h header file in your project.

LocalDB のバージョン管理LocalDB Versioning

LocalDB インストールでは、主要な SQL Server バージョンごとの単一のバイナリ セットを使用します。The LocalDB installation uses a single set of binaries per major SQL Server version. これらの LocalDB バージョンは維持され、個別にパッチが適用されます。These LocalDB versions are maintained and patched independently. つまり、ユーザーはどの LocalDB ベースライン リリース (主要な SQL Server バージョン) を使用するのかを指定する必要があるということです。This means that the user has to specify which LocalDB baseline release (that is, major SQL Server version) he or she will be using. バージョンは、.NET Framework で定義されている標準的なバージョンの形式で指定されるSystem.Versionクラス。The version is specified in the standard version format defined by the .NET Framework System.Version class:

major.minor[.build[.revision]]major.minor[.build[.revision]]

バージョン文字列の最初の 2 つの番号 (メジャーマイナー) は必須です。The first two numbers in the version string (major and minor) are mandatory. バージョン文字列の最後の 2 つの番号 (ビルドリビジョン) オプションで、既定で 0 に、ユーザーがいる場合。つまり、ある場合は、ユーザーは、LocalDB バージョン番号として「12.2」だけを指定します、処理されます、ユーザーが"12.2.0.0 と"指定した場合。The last two numbers in the version string (build and revision) are optional and default to zero if the user leaves them out. This means that if the user specifies only "12.2" as the LocalDB version number, it will be treated as if the user specified "12.2.0.0".

LocalDB インストールのバージョンは、SQL Server インスタンス レジストリ キーの下の MSSQLServer\CurrentVersion レジストリ キーに定義されます。次に例を示します。The version for the LocalDB installation is defined in the MSSQLServer\CurrentVersion registry key under the SQL Server instance registry key, for example:

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

同じ 1 台のワークステーション上で複数の LocalDB バージョンが同時にサポートされます。Multiple LocalDB versions on the same workstation are supported side-by-side. ただし、ユーザー コード常に使用して利用可能な最新SQLUserInstance LocalDB インスタンスに接続するため、ローカル コンピューター上の DLL。However, user code always uses the latest available SQLUserInstance DLL on the local computer to connect to LocalDB instances.

SQLUserInstance DLL の検索Locating the SQLUserInstance DLL

検索する、 SQLUserInstance DLL、クライアント プロバイダーを使用して、次のレジストリ キー。To locate the SQLUserInstance DLL, the client provider uses the following registry key:

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

このキーの下に、キーのリストがあります。このコンピューターにインストールされている LocalDB のバージョンごとに 1 つのキーがあります。Under this key there is a list of keys, one for each version of LocalDB installed on the computer. これらの各キーという名前の形式で LocalDB バージョン番号を使用 <メジャー バージョン > . <マイナー バージョン > (たとえば、キーをSQL Server 2014 (12.x)SQL Server 2014 (12.x)13.0 という名前)。Each of these keys is named with the LocalDB version number in the format <major-version>.<minor-version> (for example, the key for SQL Server 2014 (12.x)SQL Server 2014 (12.x) is named 13.0). 各バージョン キーの下に、InstanceAPIPath の名前と値のペアが 1 つあります。このペアは、そのバージョンでインストールされた SQLUserInstance.dll ファイルの絶対パスを定義します。Under each version key there is an InstanceAPIPath name-value pair that defines the full path to the SQLUserInstance.dll file installed with that version. 次の例は、LocalDB バージョン 11.0 と 13.0 がインストールされているコンピューターのレジストリ エントリを示しています。The following example shows the registry entries for a computer that has LocalDB versions 11.0 and 13.0 installed:

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

クライアント プロバイダーがインストールされているすべてのバージョンと負荷の間で最新バージョンを見つける必要があります、 SQLUserInstance DLL ファイルが関連付けられているInstanceAPIPath値。The client provider must find the latest version among all installed versions and load the SQLUserInstance DLL file from the associated InstanceAPIPath value.

64 ビット版 Windows 上の WOW64 モードWOW64 Mode on 64-bit Windows

LocalDB の 64 ビット インストールには、追加のレジストリ キー セットがあるため、Windows-32-on-Windows-64 (WOW64) モードで実行される 32 ビット版アプリケーションで LocalDB を使用することができます。64-bit installations of LocalDB will have an additional set of registry keys to allow 32-bit applications running in Windows-32-on-Windows-64 (WOW64) mode to use LocalDB. 具体的には、64 ビット版 Windows では、LocalDB MSI が次のレジストリ キーを作成します。Specifically, on 64-bit Windows, the LocalDB MSI will create the following registry keys:

[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 ビットのプログラムの読み取り、Installed Versionsキーの 64 ビット バージョンを指す値が表示されます、 SQLUserInstance DLL 中 (WOW64 モードの 64 ビット Windows で実行されている) 32 ビット プログラムは、に自動的にリダイレクトされますInstalled Versionsキーの下にある、 Wow6432Node hive します。64-bit programs reading the Installed Versions key will see values pointing to 64-bit versions of the SQLUserInstance DLL, while 32-bit programs (running on 64-bit Windows in WOW64 mode) will be automatically redirected to an Installed Versions key located under the Wow6432Node hive. このキーには 32 ビット バージョンを指す値が含まれています、 SQLUserInstance DLL。This key contains values pointing to 32-bit versions of the SQLUserInstance DLL.

LOCALDB_DEFINE_PROXY_FUNCTIONS の使用Using LOCALDB_DEFINE_PROXY_FUNCTIONS

LocalDB インスタンス API は、探索の読み込みを自動化する LOCALDB_DEFINE_PROXY_FUNCTIONS という名前の定数を定義、 SqlUserInstance DLL。The LocalDB instance API defines a constant named LOCALDB_DEFINE_PROXY_FUNCTIONS that automates the discovery and loading of the SqlUserInstance DLL.

この定数によって有効化されるコードのセクションにより、各 LocalDB API のプロキシが実装されます。The section of code enabled by this constant provides an implementation of proxies for each of the LocalDB APIs. プロキシの実装では、共通の関数を使用して、インストールされている最新のエントリ ポイントにバインドSqlUserInstance DLL、要求を転送します。The proxy implementations use a common function to bind to entry points in the latest installed SqlUserInstance DLL, and then forward the requests.

プロキシ関数が有効化されるのは、定数 LOCALDB_DEFINE_PROXY_FUNCTIONS がユーザー コードで定義された後に、sqlncli.h ファイルがインクルードされた場合だけです。The proxy functions are enabled only if the constant LOCALDB_DEFINE_PROXY_FUNCTIONS is defined in the user code before including the sqlncli.h file. この定数は、すべての API エントリ ポイントの外部関数名を定義するので、1 つのソース モジュール (.cpp ファイル) だけに定義する必要があります。The constant should be defined in only one source module (.cpp file) because it defines external function names for all of the API entry points. この定数により、各 LocalDB API のプロキシが実装されます。It provides an implementation of proxies for each of the LocalDB APIs.

次のコード例では、ネイティブの C++ コードのマクロを使用する方法を示します。The following code example shows how to use the macro from the native C++ code:

// 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"12.0", L"name", 0)))  
{  
...  
}  
...