web-dev-qa-db-ja.com

データベースが利用できないのはなぜですか?

サーバー上にデータベースが1つあり、常に使用できなくなります。修正するには、オフラインにしてからオンラインに戻します。イベントビューアを見ると、次の3つのエラーが連続して発生します。

FCB :: Openが失敗しました:ファイル番号1のファイルC:...\MyDatabase.mdfを開くことができませんでした。OSエラー:32(別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。).

FCB :: Openが失敗しました:ファイル番号2のファイルC:...\MyDatabase_1.ldfを開くことができませんでした。OSエラー:32(別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。).

ファイルアクティベーションエラーが発生しました。物理ファイル名 'C:...\MyDatabase_1.ldf'が正しくない可能性があります。追加のエラーを診断して修正し、操作を再試行してください。

データベースのプロパティを見ると、ログファイルのパスは正しいように見えます。私は実際にはDBAではありませんが、必要に応じてDBAをプレイします。ここで他に何を探すべきですか?

(SQL Server 2008 Express SP1)

3
Michael Itzoe

ランドルフが言ったように、あなたはおそらく問題のファイルを保持しているAVプロセスを持っています。これを確認するには、MicrosoftのSysinternalsからProcess Explorerまたはhandle.exe(あるいはその両方!)を入手してください。彼らのすべてのツールを学び、愛してください。

AVではなく、それらのファイルがロックされている他の何かである場合は、それが何であれ修正します。

また、余談ですが、システムボリューム(通常はC:\ドライブ)にデータやログファイルは必要ありません。それらがディスクをいっぱいにする場合は、サーバーを停止しています。おそらく別のボリュームでそれらが必要です。警告-SQLExpressを使用すると、最大DBサイズがディスクにある空き容量よりも小さくなる場合がありますが、それが常に当てはまると思いますか?

2
mfinni

私も何年もの間このエラーを修正しようとしてきました! wwwのさまざまなフォーラムでは恒久的な修正は提供されていませんが、正しい解決策は、EMCO UnlockItなどのプロセスエクスプローラーを使用して、エラーが発生したときに、ログファイルまたはmdfファイルがWebサイトであることを証明することです。開こうとしているのは間違いなくその時点でSQLServer Expressによってブロックされています(SQL Server Expressアプリケーションを閉じた後でも)。そのため、SQL Serverを閉じた後も、Webサイトにログオンしたときにエラーが発生します。

エラーは完全に正確だと思います。ログファイルまたはデータベース、あるいはその両方にアクセスするために許可されたプロセスが十分ではありません。デスクトップでウェブサイトを開いていて、それがデータベースにアクセスしている場合、おそらく他のユーザーも同様にアクセスしようとしています(複数のホストされているウェブサイトがある場合は、別のデータベースに対しても)。それでは、少なくとも2つの同時プロセスが必要です。これは、SQL Serverが1つを保持する前なので、3つのプロセスが必要になり、他のユーザーが接続するとさらに1つ必要になります。私はこのテーマの専門家ではないので間違っているかもしれません。しかしながら:-

SQLSERVER EXPRESSを開いてルートノードを右クリックすると、[詳細設定]タブでブロックされたプロセスのしきい値を増やすことができます。また、同時接続の最大数を増やすこともできます。これが解決策のように思えますが、とにかく、ブロックされたプロセスのしきい値を0から12に増やし、これまでのところ正常に機能しています。おそらく夜遅くなので、接続しようとしているユーザーはそれほど多くありませんが、とにかくこれは私にとって賢明な解決策のようです!

幸運を。フランキー、リーズウェストヨークシャー、英国

0
Frankie Leeds