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)