web-dev-qa-db-ja.com

リカバリ保留からデータベースをオンラインにすることができません

SQL Serverデータベースをオンラインにして、アクセス可能な状態にし、回復保留状態にしようとしています。 SQL Serverサービスは、ドメイン管理者であり、SQLサーバー上のsysadminのメンバーであるActive Directoryアカウントを使用します。 SQL Serverアカウントはドメイン管理者であるため、SQLファイルフォルダーに対する権限が必要です。ただし、SQL Serverのローカル管理者ではありません。

エラーメッセージは次のとおりです。

メッセージ5120、レベル16、状態101、行1物理ファイル "F:\ Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DBName.ndf"を開けません。オペレーティングシステムエラー5: "5(Access is denied。)"。メッセージ5120、レベル16、状態9、行1物理ファイル「F:\ Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\DBName.ndf」を開けません。オペレーティングシステムエラー5: "5(Access is denied。)"。

ながら

alter database [DBName] set online;

以下のエラーが発生します:

メッセージ945、レベル14、状態2、行1データベース 'データベース'は、ファイルにアクセスできないか、メモリまたはディスク領域が不足しているため開くことができません。詳細については、SQL Serverエラーログを参照してください。メッセージ5069、レベル16、状態1、行1のALTER DATABASEステートメントが失敗しました。

あなたは解決策を考えることができますか?

4
user42148

最初の問題は、NDFおよびMDFファイルのSQL Serverサービスを誰かが拒否したことであり、その拒否が削除されて適切なアクセス権が付与されると、最初の問題は解決されました。2番目の解決策は、NDFファイルの破損です。データがなかったので削除し、データベースをオンラインに戻しました。

2
Mulugeta Teffra

私の場合の問題は、データベースがそこにないことでした。システム担当者がディスク領域を解放して、開発データベースの一部を消去しようとしていることがわかりました。そう:

  • 最初のステップは、データベースが実際に存在するかどうかを確認することです(あなたの場合F:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\
  • 次に、SQLアカウントにその場所へのアクセス権があるかどうかを確認する必要があります(あなたとSQLサーバーは異なる権限を持っている可能性があるため)
  • 最後に、その特定のデータベースに対するalterへの(自分の)権限を確認します。
0