ナレッジベースを名前を変えてコピーする方法


ナレッジベースのコピーは、基本的な機能としては無く、少々面倒な手順が必要です。

新しいプロジェクトのために新規ナレッジベースを用意する際に、過去のナレッジベースから開発をスタートさせたい場合は良くあります。
それ以外でも、他者にナレッジベースを渡したい場合にも使えますので、覚えておいて頂くと何かと役に立ちます。

ちなみに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: ナレッジベースをバックアップする方法

コメント

このブログの人気の投稿

IVS文字・サロゲートペア文字の注意

Tomcatの設定3:8080ポート以外で動作させる

GeneXusのオプション設定、起動時オプション

Tomcatの設定5:メモリ調整と起動モード

Tomcatで画面表示の速度改善

Tomcatの設定1:データソースを使用する方法とメリット