DSN バインド ユーティリティ

DSN バインド ユーティリティを使用して、SQL Server アプリケーションにデータベースをバインドする処理を、コマンド ラインから実行するかまたはビルド後のイベントとして実行できます。

DSN バインド ユーティリティでは、SQL Server データベースへの接続がアクティブであること、および実行する DSN コマンドを含んだバインド スクリプト ファイル (.hcodsn ファイル) が提供されることが必要になります。バインド スクリプト ファイルは、Manage Packages and Plans ツールを使用して作成するか、またはテキスト エディタを使用して手動で作成できます。
注:HCOSS バインド スクリプト ファイルで有効なコマンドの一覧については、『バインド スクリプトのコマンド』トピックを参照してください。

ビルド後のイベントは、IDE でアプリケーションをビルドした直後に自動で実行されるプロセスです。

DSN バインド ユーティリティは毎回の実行で、スキーマ更新実行とそれに続くバインド スクリプト実行の 2 つの連続した段階で実行します。

スキーマ更新実行

この実行段階では、DSN は接続先の SQL Server データベースを検証し、必要なテーブルとストアド プロシージャがデータベースにあり、テーブルと関数の定義が HCOSS の使用バージョンと一致することを確かめます。正常な検証結果が戻されると、DSN はバインド スクリプト実行段階に移行します。検証に失敗した場合、DSN は次へ進む前にスキーマ更新を実行します。

DSN データベースの検証に失敗すると、次のいずれかに該当する場合に限りスキーマ更新がトリガーされます。
  • 新しい SQL Server データベースに対して DSN を実行した
  • HCOSS アップグレードのインストール後に初めて DSN を実行した
  • DSN は、必要なテーブルまたは / およびストアド プロシージャがデータベースにないと判定した
スキーマ更新を実行するために、DSN は次の SQL スクリプトを SQL Server データベースに対して実行します。
  • InstallSYSIBM.sql - バインドされる DBRM を管理するために DSN が使用するメタデータ テーブルを作成します。
  • InstallBindProcs.sql - これらのテーブルを管理するために DSN が使用するストアド プロシージャを作成します。
  • InstallDigitsFunction.sql - SQL Server にはない DB2 関数をエミュレートするための次の関数を作成します。
    • DATEINTERVAL
    • DIGITS
    • JULIANDAY
    • LASTDAY
    • LPAD
    • MIDNIGHT_SECONDS
    • NEXTDAY
    • RPAD
    • STRIP
    • TIMEINTERVAL
    • TRANSLATE
    • TRUNCATE

これらの SQL スクリプトは、%ALLUSERSPROFILE%\Micro Focus\Enterprise Developer\hcoss ディレクトリに置かれます。

スキーマ更新プロセスを正しく完了するために、以下の権限をともなうログイン認証情報を使用して SQL Server データベースに接続します。
  • CREATE SCHEMA
  • CREATE TABLE
  • DROP TABLE
  • CREATE INDEX
  • DROP INDEX
  • SYSIBM スキーマの CREATE PROCEDURE
  • dbo スキーマの DROP と CREATE FUNCTION
重要:これらの必須権限のセットによって、DSN によって定期的に検証とバインドを実行する際に必要な SQL Server データベースへのアクセスよりも広範なアクセスが可能になります。つまり、データベース検証時にはスキーマ更新プロセスはトリガーされないことになります。DSN をコマンド ラインから実行するかまたはビルド後のイベントとして実行することでアプリケーションを定期的にバインドし、さらに権限を日常的な使用で制限する場合は、新しい SQL Server データベースを作成した直後および毎回の HCOSS アップグレード後に手動でこのプロセスを 完了することにより、潜在的なエラーを回避し、DSN がスキーマの自動更新をトリガーするのを避けることができます。手動でスキーマ更新を実行するには、必要な権限をともなうログイン認証情報を使用して SQL Server データベースに接続し、手動で SQL スクリプトを実行します。

データベース検証を実行するために必要な権限は、バインド スクリプト実行に必要な権限と同じです。

バインド スクリプト実行

バインド スクリプト実行段階では、DSN は次を行います。
  • パッケージとプランをバインドするストアド プロシージャを生成し、それらを次の SQL Server データベース テーブルでメタデータとして管理します。
    SYSIBM.SYSDBRM
    SYSIBM.SYSPACKAGE
    SYSIBM.SYSPACKLIST
    SYSIBM.SYSPLAN
    
  • BIND PACKAGE コマンドで指定された DBRM パッケージについては、静的 SQL 文ごとに個別のストアド プロシージャを生成し、次の命名規則に従ってそれらを SQL Server データベースに保存します。

    PKG:collectionName.memberName consistencyToken$statementNumber

    ここで、consistencyToken は DSN により生成された文字列でストアド プロシージャの固有の名前です。statementNumber は DSN により生成された数値でゼロから始まります。次に例を示します。

    PKG:COLLECTION1.MEMBERAEEEcKIKy$0

  • BIND PLAN コマンドで指定されるプランについては、指定されたパッケージ / メンバーのストアド プロシージャを生成し、類似の命名規則に従ってそれらを SQL Server データベースに保存します。

    PLN:planNameconsistencyToken$statementNumber

    次に例を示します。

    PLN:MYPLAN1.MEMBERAFFFdLJLz$0

バインド スクリプト実行段階を正しく完了するために、以下の権限をともなうログイン認証情報を使用して SQL Server データベースに接続します。
  • CREATE SCHEMA
  • CREATE PROCEDURE
  • SYSIBM スキーマの EXECUTE PROCEDURE