拡張ストアド プロシージャを作成する
適用対象: SQL サーバー
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CLR Integration を使用してください。
拡張ストアド プロシージャは、プロトタイプを含む C/C++ 関数です。
SRVRETCODE xp_extendedProcName **(**SRVPROC *);
プレフィックス xp_ は省略可能です。 拡張ストアド プロシージャ名は、サーバーにインストールされているコード ページ/並べ替え順序に関係なく、Transact-SQL ステートメントで参照される場合、大文字と小文字が区別されます。 DLL を作成する際は、次の点に注意します。
エントリ ポイントが必要である場合は、DllMain 関数を記述します。
この関数は省略可能です。ソース コードに記述されていない場合は、コンパイラにより独自のバージョン (何も実行せずに TRUE を返す) がリンクされます。 DllMain 関数を記述した場合は、スレッドまたは処理が DLL にアタッチされる際、または DLL からデタッチされる際に、オペレーティング システムによってこの関数が呼び出されます。
DLL 外部から呼び出す関数 (拡張ストアド プロシージャ関数) はすべて、エクスポートする必要があります。
関数をエクスポートするには、.def ファイルの EXPORTS セクションでその名前を一覧表示するか、ソース コードの関数名の前に microsoft コンパイラ拡張機能である __declspec(dllexport) を付けます (__declspec() は 2 つのアンダースコアで始まることに注意してください)。
拡張ストアド プロシージャ DLL を作成するには、次のファイルが必要です。
ファイル | 説明 |
---|---|
Srv.h | 拡張ストアド プロシージャ API ヘッダー ファイル |
Opends60.lib | Opends60.dll のインポート ライブラリ |
拡張ストアド プロシージャ DLL を作成するには、ダイナミック リンク ライブラリ プロジェクトを作成します。 DLL の作成に関する詳細については、開発環境のドキュメントを参照してください。
すべての拡張ストアド プロシージャ DLL で次の関数を実装およびエクスポートすることを強くお勧めします。
__declspec(dllexport) ULONG __GetXpVersion()
{
return ODS_VERSION;
}
Note
__declspec(dllexport) は Microsoft 固有のコンパイラ拡張子です。 お使いのコンパイラでこのディレクティブがサポートされない場合は、DEF ファイルの EXPORTS セクションでこの関数をエクスポートする必要があります。
SQL Server がトレース フラグ -T260 で起動されている場合、またはシステム管理者特権を持つユーザーが DBCC TRACEON (260) を実行し、拡張ストアド プロシージャ DLL が __GetXpVersion() をサポートしていない場合、警告メッセージ (エラー 8131: 拡張ストアド プロシージャ DLL '%' は __GetXpVersion() をエクスポートしません)。 がエラー ログに出力されます。 (__GetXpVersion() は 2 つのアンダースコアで始まることに注意してください)。
拡張ストアド プロシージャ DLL により __GetXpVersion() がエクスポートされ、この関数によって返されるバージョンがサーバーで要求されるバージョンよりも低い場合、この関数によって返されたバージョンとサーバーが必要とするバージョンを示す警告メッセージがエラー ログに出力されます。 このメッセージが表示された場合、__GetXpVersion() から正しくない値が返されるか、古いバージョンの srv.h でコンパイルされています。
Note
拡張ストアド プロシージャでは、Microsoft Win32 関数である SetErrorMode を呼び出さないでください。
実行時間の長い拡張ストアド プロシージャの場合は、srv_got_attention を定期的に呼び出すことにより、接続が強制的に切断された場合やバッチが中断された場合に、その拡張ストアド プロシージャが自身を終了できるようにすることをお勧めします。
拡張ストアド プロシージャ DLL をデバッグするには、それを SQL Server\Binn ディレクトリにコピーします。 デバッグ セッションの実行可能ファイルを指定するには、Microsoft SQL Server 実行可能ファイルのパスとファイル名を入力します (例: C:\Program Files\Microsoft SQL Server\MSSQL13。MSSQLSERVER\MSSQL\Binn\Sqlservr.exe)。 sqlservr 引数の詳細については、「 sqlservr Application」を参照してください。
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示