Distributed Tuning Interface のリファレンス : PvCreateDatabase()
 
このページをシェアする                  
PvCreateDatabase()
dbnames.cfg ファイルへエントリを追加することによって、データベースを作成します。このエントリは、後で DSN の作成に使用されます。
ヘッダー ファイル:catalog.h(ヘッダー ファイルも参照)
関数が最初に利用可能になるライブラリ:w3dbav75.dll(Windows)、libpsqldti.so(Linux)(リンク ライブラリも参照)
構文
BTI_API PvCreateDatabase(
BTI_LONG           hConnection,
BTI_CHAR_PTR       dbName,
BTI_CHAR_PTR       dictPath,
BTI_CHAR_PTR       dataPath,
BTI_ULONG          dbFlags);
引数
 
In
hConnection
サーバーを識別する接続ハンドル。接続ハンドルは PvConnectServer()関数によって取得されます。
In
dbName
データベース名。
In
dictPath
辞書パス。
In
dataPath
データ パス。デフォルトのデータ パス(つまり、辞書パスと同じパス)を使用するには、空文字列を渡します。
複数のパスに保存された トランザクショナル インターフェイス データ ファイルから構成されるデータベースを作成する場合は、このパラメーターにセミコロン(;)で区切られた一覧を指定します。たとえば、次のようにします。
C:\data\path1;C:\data\path2
In
dbFlags
データベース フラグ。P_DBFLAG_ 定数を組み合わせて指定できます。
P_DBFLAG_RI(参照整合性およびトリガーを含む、整合性制約を設定します。)
P_DBFLAG_BOUND(DDF ファイルを作成してデータベース名を辞書にスタンプし、そのデータベースのみが DDF を使用できるようにします。データベースがバインドされていない場合は、複数のデータベースで同一の辞書ファイル セットを使用できます。)バウンド データベースを作成するときに既存の DDF ファイルにバインドしたい場合は、P_DBFLAG_CREATE_DDF と P_DBFLAG_BOUND の両方を指定します。
P_DBFLAG_CREATE_DDF(DDF ファイルを作成します。dictPath に指定されたディレクトリは存在している必要があります。)
P_DBFLAG_DBSEC_AUTHENTICATION(データベース セキュリティ認証の混合セキュリティを使用します。Btrieve セキュリティ ポリシーを参照してください)。
P_DBFLAG_DBSEC_AUTHORIZATION(データベース セキュリティ認証のデータベース セキュリティ ポリシーを使用します。Btrieve セキュリティ ポリシーを参照してください)。
P_DBFLAG_LONGMETADATA(メタデータ バージョン 2 を使用します。メタデータのバージョンを参照してください)。
戻り値
 
P_OK
操作は成功しました。
P_E_INVALID_HANDLE
接続ハンドルが無効です。
P_E_NULL_PTR
ヌル ポインターによる呼び出しです。
P_E_ACCESS_RIGHT
操作を実行するための十分なアクセス権がありません。
P_E_DICTIONARY_ALREADY_EXISTS
辞書は既に存在するため、作成できません。
P_E_SHARED_DDF_EXIST
辞書パスは別のデータベースが使用中です。
P_E_DUPLICATE_NAME
名前付きデータベースはサーバーに既に存在します。
P_E_FAIL
その他の理由により失敗しました。
備考
以下の前提条件を満たす必要があります。
PvStart()呼び出しによって DTI セッションが開始されている。
PvConnectServer()によって接続が確立している。ただし、ローカル マシンで操作を実行する場合は、接続ハンドルとして P_LOCAL_DB_CONNECTION を使用できます。
Btrieve セキュリティ ポリシー
次の表は、新規データベースでセキュリティ モデルを指定する方法、および既存データベースのセキュリティ モデルを解釈する方法を示しています。セキュリティにほかのフラグの組み合わせを使用すると、ステータス コード 7024 が返される結果となります。
フラグの組み合わせ
相当するセキュリティ モデル
フラグなし
クラシック
P_DBFLAG_DBSEC_AUTHENTICATION
混合
P_DBFLAG_DBSEC_AUTHENTICATION + P_DBFLAG_DBSEC_AUTHORIZATION
データベース
メタデータのバージョン
P_DBFLAG_LONGMETADATA を指定した場合、dbnames.cfg のデータベース プロパティは メタデータ バージョン 2 に設定されます。P_DBFLAG_LONGMETADATA および P_DBFLAG_CREATE_DDF を指定した場合、作成される DDF も メタデータ バージョン 2 です。
DDF 作成の結果は、辞書の場所に既に存在する DDF のバージョンによって異なります。
辞書の場所にあるもの
DDF 作成の結果
DDF なし
辞書の場所に新規 DDF が追加されます。
別のメタデータ バージョンの DDF
既存の DDF のグループに新規 DDF が追加されます。
同じメタデータ バージョンの DDF
新規 DDF が既存の DDF を上書きします。古い DDF に含まれる情報は失われます。
たとえば、辞書の場所にメタデータ バージョン 1 DDF があってメタデータ バージョン 2 DDF を作成するとします。辞書の場所には、メタデータ バージョン 1 DDF とメタデータ バージョン 2 DDF の組み合わせが含まれることになります。あるデータベースは 1 組の DDF またはほかの 1 組の DDF を使用できますが、両方を同時に使用することはできません。
以下の例では、メタデータ バージョン 2 を使用するデータベースと DDF を作成します。
BTI_LONG connectionHandle = P_LOCAL_DB_CONNECTION;
BTI_CHAR_PTR dataPath = "c:\\data\\gallery";
BTI_CHAR_PTR dictPath = "c:\\data\\gallery";
BTI_CHAR_PTR databaseName = "Gallery";
BTI_SINT status = 0;
BTI_CHAR_PTR server = "MyServer";
BTI_CHAR_PTR user = "Administrator";
BTI_CHAR_PTR pwd = "Admin";
// リモートの場合のみ、サーバーへの接続が必要となる
// リモートでない場合は、ハンドルとして
// P_LOCAL_DB_CONNECTION を渡すことができる
 
status = PvCreateDatabase(
connectionHandle,
databaseName,
dictPath,
dataPath,
P_DBFLAG_CREATE_DDF,
P_DBFLAG_LONGMETADATA);
関連項目
PvStart()
PvConnectServer()
PvGetDbFlags()
PvModifyDatabase()
PvDropDatabase()
PvDisconnect()
PvStop()