TECHNOLOGY

FAQ (よくある質問)

QUESTION ( SQ1105107 )

データベースを起動しようとすると「トランザクション・ログを開けません」というエラーが発生して起動に失敗します。
このデータベースは別のPCでは動作していました。(別のPCからDBファイルをコピーしました。)

ANSWER

エラーの原因:

このエラーは、トランザクション・ログの名前として指定されたフォルダが存在しない環境で、データベースを起動しようとした場合に発生します。
※データベース作成ウィザードや、初期化ユーティリティ (dbinit)でDB作成時に、トランザクション・ログにフルパス指定したり、トランザクション・ログ・ユーティリティ(dblog)で、トランザクション・ログのパスをフルパス付きに変更したケースが該当します。

この現象は、フォルダの有無が原因であり、トランザクション・ログ・ファイルが存在するかどうかは影響致しません。
つまり、データベース・ファイルと同じフォルダにトランザクション・ログ・ファイルをコピーしても、このエラーは解消されません。

トランザクション・ログの確認方法:

トランザクション・ログがフルパス指定されているかどうかは、トランザクション・ログ・ユーティリティ(dblog)
で確認することができます。

(例)コマンドラインから以下のコマンドを実行してトランザクション・ログの名前を確認します。

>dblog Database1.db
SQL Anywhere トランザクション・ログ・ユーティリティ バージョン 11.0.1.xxxx
“Database1.db” はログ・ファイル “C:Trantran1.log” を使用しています。
“Database1.db” はログ・ミラー・ファイルを使用していません。
トランザクション・ログの開始オフセットは xxxxxxxxxx です。
トランザクション・ログの現在の相対オフセットは xxxxxxxxxx です。

赤文字の部分にパス名が含まれていれば、このデータベースのトランザクション・ログは絶対パスが指定されています。

対処方法:

指定されているフォルダを作成するか、トランザクション・ログ・ユーティリティ(dblog)で現在のログの名前を変更することで、データベースを起動できるようになります。

(例)コマンドラインから以下のようにdblogコマンドを実行し、トランザクション・ログの名前を変更します。

>dblog Database1.db -t tran2.log
SQL Anywhere トランザクション・ログ・ユーティリティ バージョン 11.0.1.xxxx
“Database1.db” はログ・ファイル “C:Trantran1.log” を使用していました。
“Database1.db” はログ・ミラー・ファイルを使用していません。
“Database1.db” はログ・ファイル “tran2.log” を使用するようになりました。
トランザクション・ログの開始オフセットは xxxxxxxxxx です。
トランザクション・ログの現在の相対オフセットは xxxxxxxxxx です。

トランザクション・ログ・ユーティリティ(dblog)の詳細につきましては、以下のオンライン・マニュアルをご参照下さい。
SQL Anywhere サーバ – データベース管理 >> データベースの管理 >> データベース管理ユーティリティ >> トランザクション・ログ・ユーティリティ (dblog)