ドライバー アプリケーションの作成
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
重要
SQL Server Native Client (SNAC) は同梱されていません。
- SQL Server 2022 (16.x) 以降のバージョン
- SQL Server Management Studio (19 以降のバージョン) の場合
SQL Server Native Client (SQLNCLI または SQLNCLI11) とレガシ Microsoft OLE DB Provider for SQL Server (SQLOLEDB) は、新しいアプリケーション開発には推奨されません。
新しいプロジェクトの場合は、次のいずれかのドライバーを使用します。
SQL Server データベース エンジン (バージョン 2012 から 2019) のコンポーネントとして付属する SQLNCLI については、この「サポート ライフサイクルの例外」を参照してください。
ODBC アーキテクチャには、次の機能を実行する 4 つのコンポーネントがあります。
コンポーネント | 機能 |
---|---|
アプリケーション | ODBC 関数を呼び出して ODBC データ ソースと通信し、SQL ステートメントを送信して、結果セットを処理します。 |
Driver Manager (ドライバー マネージャー) | アプリケーションと、そのアプリケーションで使用されるすべての ODBC ドライバー間の通信を管理します。 |
Driver | アプリケーションからのすべての ODBC 関数呼び出しを処理し、データ ソースに接続して、SQL ステートメントをアプリケーションからデータ ソースに渡し、結果をアプリケーションに返します。 必要に応じて、アプリケーションの ODBC SQL をデータ ソースで使用されるネイティブ SQL に変換します。 |
データ ソース | DBMS 内にあるデータの特定のインスタンスにアクセスするためにドライバーが必要とするすべての情報が含まれています。 |
SQL Server Native Client ODBC ドライバーを使用して SQL Server のインスタンスと通信するアプリケーションは、次のタスクを実行します。
データ ソースとの接続
データ ソースへの SQL ステートメントの送信
データ ソースから返されたステートメント結果の処理
エラーとメッセージを処理する
データ ソースへの接続の終了
SQL Server Native Client ODBC ドライバー用に記述されたより複雑なアプリケーションでも、次のタスクが実行される場合があります。
カーソルを使用した結果セット内の位置の制御
トランザクション制御に関するコミット操作やロールバック操作の要求
2 台以上のサーバーに関連する分散トランザクションの実行
リモート サーバーでのストアド プロシージャの実行
結果セットの属性に関する情報を取得するためのカタログ関数の呼び出し
一括コピー操作を実行する
大きなデータ (varchar(max)、 nvarchar(max)、および varbinary(max) 列) 操作を管理する
データベース ミラーリングが構成されているときにフェールオーバーを容易にするための再接続ロジックの使用
パフォーマンス データや実行時間の長いクエリのログ記録
ODBC 関数を呼び出すには、C または C++ アプリケーションで sql.h ヘッダー ファイル、sqlext.h ヘッダー ファイル、および sqltypes.h ヘッダー ファイルをインクルードする必要があります。 ODBC インストーラーの API 関数を呼び出す場合は、アプリケーションで odbcinst.h ヘッダー ファイルをインクルードする必要があります。 Unicode ODBC アプリケーションでは、sqlucode.h ヘッダー ファイルをインクルードする必要があります。 ODBC アプリケーションは、odbc32.lib ファイルとリンクする必要があります。 ODBC インストーラーの API 関数を呼び出す ODBC アプリケーションは、odbccp32.lib ファイルとリンクする必要があります。 これらのファイルは、Windows プラットフォーム SDK に含まれています。
SQL Server Native Client ODBC ドライバーを含む多くの ODBC ドライバーには、ドライバー固有の ODBC 拡張機能が用意されています。 SQL Server Native Client ODBC ドライバー固有の拡張機能を利用するには、アプリケーションに sqlncli.h ヘッダー ファイルを含める必要があります。 このヘッダー ファイルには、次の要素が含まれています。
SQL Server Native Client ODBC ドライバー固有の接続属性。
SQL Server Native Client ODBC ドライバー固有のステートメント属性。
SQL Server Native Client ODBC ドライバー固有の列属性。
SQL Server 固有のデータ型。
SQL Server 固有のユーザー定義データ型。
SQL Server Native Client ODBC ドライバー固有の SQLGetInfo 型。
SQL Server Native Client ODBC ドライバーの診断フィールド。
SQL Server 固有の診断動的関数コード。
SQL Server 固有のネイティブ C データ型の C/C++ 型定義 (C データ型にバインドされた列SQL_C_BINARY場合に返されます)。
SQLPERF データ構造体の型定義
ODBC 接続経由の一括コピー API の使用をサポートするための一括コピー用のマクロとプロトタイプ
リンク サーバーとリンク サーバーのカタログ一覧を取得するための分散クエリ メタデータ API 関数呼び出し
SQL Server Native Client ODBC ドライバーの一括コピー機能を使用する C または C++ ODBC アプリケーションは、sqlncli11.lib ファイルとリンクする必要があります。 分散クエリ メタデータ API 関数を呼び出すアプリケーションも、sqlncli11.lib とリンクする必要があります。 sqlncli.h ファイルと sqlncli11.lib ファイルは、SQL Server 開発者のツールの一部として配布されます。 SQL Server Include ディレクトリと Lib ディレクトリは、次のようにコンパイラの INCLUDE および LIB パスに含める必要があります。
LIB=c:\Program Files\Microsoft Data Access SDK 2.8\Libs\x86\lib;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Lib;
INCLUDE=c:\Program Files\Microsoft Data Access SDK 2.8\inc;C:\Program Files\Microsoft SQL Server\100\Tools\SDK\Include;
アプリケーションで複数の ODBC 呼び出しが同時に未処理状態になる必要があるかどうかというデザイン上の決定を、アプリケーションのビルド処理の初期段階で行います。 複数の同時実行 ODBC 呼び出しをサポートするには 2 つの方法があり、このセクションの残りのトピックで説明されています。 詳細については、「ODBC プログラマーズ リファレンス」を参照してください。