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

重要: Enterprise Developer 2.2 Update 1 以降の各リリースでは、既存のすべての SQL Server データベースに対して DSN バインド ユーティリティを実行します。これにより、データベースに格納されているすべてのメインフレーム成果物が各ソフトウェア リリースで適切に更新されます。

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

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

ビルド後のイベントは、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
    
    重要: SYSIBM のストアド プロシージャは、これらのテーブルを更新できる十分な権限で実行する必要があります。
  • 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