ナレッジベースを名前を変えてコピーする方法
ナレッジベースのコピーは、基本的な機能としては無く、少々面倒な手順が必要です。
新しいプロジェクトのために新規ナレッジベースを用意する際に、過去のナレッジベースから開発をスタートさせたい場合は良くあります。
それ以外でも、他者にナレッジベースを渡したい場合にも使えますので、覚えておいて頂くと何かと役に立ちます。
ちなみにGeneXusServerがあると簡単に実施できますが、今回は、GeneXusServerが無い場合の手順を掲載します。
※以下の手順はGeneXus16U2ですが、GeneXus15 Ev1から同じ手順で行えます。
1.GeneXusを終了する
GeneXusが起動していると行えない処理があるため、必ず終了しましょう。
2.SQLServerから元のKBをデタッチ
1)SQLServerのManagement Studioを起動して、
ナレッジベースが格納されているデータベースをデタッチします。
2)システムDBも併せてコピーする場合はそれもデタッチします。
※システムDBがSQLServer以外の場合は、ダンプ/バックアップ 等
3.KBフォルダをコピー
1)KBフォルダをコピーします。
2)フォルダ名を新しいKB名に変更します。
4.KBフォルダ内の不要ファイルを削除、ファイル名を変更
1)以下のファイルを残して、削除します。
・GX_KB_TestKB_WWP_16U2.mdf (ナレッジベース格納DB)
・GX_KB_TestKB_WWP_16U2_log.ldf (ナレッジベース格納DBのログ)
・knowledgebase.connection (ナレッジベース格納DBがどこにあるかを示すファイル)
・TestKB_WWP_16U2.gxw (GeneXus起動用のショートカット)
・TestKB_WWP_16U2_DB.mdf (システムDB)
・TestKB_WWP_16U2_DB_log.ldf (システムDBのログ)
2)ファイル名を新しいKB名に合わせて変更します。
TestKB_WWP_16U2 → TestKB_WWP_16U2_COPY
・GX_KB_TestKB_WWP_16U2_COPY.mdf
・GX_KB_TestKB_WWP_16U2_COPY_log.ldf
・TestKB_WWP_16U2_COPY.gxw
・TestKB_WWP_16U2_COPY_DB.mdf
・TestKB_WWP_16U2_COPY_DB_log.ldf
5.mdfファイル、ldfファイルのセキュリティ権限を変更
mdfファイル、ldfファイルを右クリックでプロパティを開く
セキュリティタブで、Everyoneユーザーにフルコントロール権限を追加します。
(4ファイルすべてに対して行います)
※この手順を行わなかった場合、次のmdfファイルのアタッチで、
「アクセスが拒否されました」とエラーが発生します。
6.mdfファイルを名前を変えてアタッチ
1)SQLServerのManagement Studioから、名前を変えたmdfファイルをアタッチします。
2)名前を変えてアタッチするために、次の設定を行います。
・上段枠の「次の名前でアタッチ」の個所を、新しい名前に変更
・下段枠の「現在のファイルパス」を新しい名前のmdfファイルに指定しなおし
・下段枠の「現在のファイルパス」を新しい名前のldfファイルに指定しなおし
3)OKをクリック
※ldfファイルが無い場合は、下段枠のldfの個所を削除すれば、アタッチの際に、新規で作成されます。
4)アタッチして作成されたDBのプロパティを開く
5)DBの論理名が元の名前になっているので、新しい名前に変更する
7.knowledgebase.connectionの編集
knowledgebase.connectionファイルをテキストで開いて、
元の名前になっている箇所を、新しい名前に変更して保存する
<ConnectionInformation>
<DBName>GX_KB_TestKB_WWP_16U2</DBName>
<IntegratedSecurity>True</IntegratedSecurity>
<ServerInstance>SYUSA-IIPC\SQL2012</ServerInstance>
<CreateDbInKbFolder>True</CreateDbInKbFolder>
<Directory>C:\knowlage_base\gx16\TestKB_WWP_16U2</Directory>
<DataFile>GX_KB_TestKB_WWP_16U2.mdf</DataFile>
<LogFile>GX_KB_TestKB_WWP_16U2_log.ldf</LogFile>
<HostName>SYUSA-IIPC</HostName>
</ConnectionInformation>
↓↓↓
<ConnectionInformation>
<DBName>GX_KB_TestKB_WWP_16U2_COPY</DBName>
<IntegratedSecurity>True</IntegratedSecurity>
<ServerInstance>SYUSA-IIPC\SQL2012</ServerInstance>
<CreateDbInKbFolder>True</CreateDbInKbFolder>
<Directory>C:\knowlage_base\gx16\TestKB_WWP_16U2_COPY</Directory>
<DataFile>GX_KB_TestKB_WWP_16U2_COPY.mdf</DataFile>
<LogFile>GX_KB_TestKB_WWP_16U2_COPY_log.ldf</LogFile>
<HostName>SYUSA-IIPC</HostName>
</ConnectionInformation>
※「IntegratedSecurity」はKBを開く際にWindows認証かどうかの設定です。
Falseとなっていても問題ありません。
8.GeneXusからKBを開く
1)GeneXusを起動する
2)[ファイル][開く]から、新しいKBファルダのTestKB_WWP_16U2_COPY.gxwを
選択すると、ナレッジベースが展開されます。
3)エラーパターンA
Windows認証では無い場合には、ユーザーIDとパスワードを新たに求めています。
SQLServerに接続できるIDとパスワードを入力してください。
4)エラーパターンB
knowledgebase.connectionファイルの内容が誤っていますので、内容をよく確認してください。
9.KB名を変更
KB名が元の名前になっていますので、新しい名前に変更します。
10.すべてリビルド
すべてリビルドを行って、完了です。
補足事項
・ナレッジベースをmdfファイルでコピーした場合は、コピー元とそっくり同じ状態となります。例えば、修正してビルドしていないオブジェクトがあった場合も、同じ状態
オブジェクトの変更履歴も同じ、GeneXusServerとの接続情報も同じ状態です。
・応用の手法として、システムが大きくリビルドに時間が掛かる場合には、
誰かがリビルドを実施して、そのKBをmdfファイル毎コピーすれば、ビルド後の状態を受け渡すことができます。
但し、その場合は、手順4.の不要ファイルの削除は行いません。
さらにTomcat配下の実行モジュールも併せて、他者にコピーする必要があります。
<参考情報>
.MDF からナレッジベースを作成する方法
GeneXus FAQ: ナレッジベースをバックアップする方法
コメント
コメントを投稿