web-dev-qa-db-ja.com

データベースmyDbにアクセスできません。 (ObjectExplorer)

SQL Server 2008 R2データベースに接続するASP.NET MVC3 Webアプリを開発しています。

私がこのエラーを受け取り始めるまで、すべてがうまくいきました:

The database myDb is not accessible. (ObjectExplorer)

この問題は、SQL Server Management Studioでデータベースを参照しようとしたときにも発生します。データベースにアクセスするための権限を失ったようです。他のデータベースも問題なく閲覧できます。

私は混合モード認証を使用しています(これまでWindows認証は正常に機能していました)。 saとしてログインすると、同じエラーが発生します。

データベースにアクセスできない場合、必要な権限をユーザーアカウントに戻すにはどうすればよいですか?

そもそもどういうことでこれが起こったのでしょうか?

最近行った唯一の変更はデータベースに関連したものではなく、これを引き起こしている原因を突き止めるのに苦労しています。

更新さて、コンピュータを再起動した後、すべてが再び動作し始めました:/私は何も変更していません、まだここで返信を読んでいませんでした。非常に奇妙な!

3
elwyn

更新さて、コンピュータを再起動した後、すべてが再び動作し始めました:/私は何も変更していません、まだここで返信を読んでいませんでした。非常に奇妙な!

1
elwyn

過去に、SQLインスタンスから削除されたように、DB所有者が悪用されていることが原因であることがわかりました。

クエリウィンドウからこれを試してください:

use <database with issue>;
exec sp_changedbowner 'sa';

その後、SSMSエクスプローラーでDBを参照できるようになります。

混合モード認証を使用していない場合は、ドメインアカウントを使用して「sa」を抑制します。できれば、SA権限を持つサービスアカウントとして機能するアカウントを使用してください。

2
artofsql

受け入れられた答えは、すべてが再起動後に機能し始めたと言いますが、なぜですか?

SSDT(Visual Studioプラグイン)を使用してデータベースを更新しようとしたところ、これが起こり、スクリプトがエラーで失敗しました。その後、SSMS(Management Studio)からでもデータベースにアクセスできませんでした。データベースエントリの横に「(シングルユーザー)」と表示されていましたが、これが問題の手がかりでした。

スクリプトはデータベースをSINGLE_USERモードに設定し、MULTI_USERに戻す前に突然終了しました。その後、データベースはSSDTユーザーをまだアクティブであると見なし、他の接続を許可しませんでした。再起動すると、その接続がクリアされ(SQL Serverサービスを循環させると、おそらくそれも実行されたはずです)、再接続できました。

そこから、DBプロパティ([オプション]-> [状態]-> [アクセス制限])を使用してデータベースをMULTI_USERモードに戻すことができますが、代わりに、完了まで実行された別のソースブランチからSSDTを実行し、モードをリセットしました。

0
Keith Robertson

非常に一般的なエラーメッセージのように見えます。 Windows認証ユーザーから以下を実行して、結果が返されるかどうかを確認してください。

EXEC sp_change_users_login 'report'

はいの場合は、以下を実行します。

EXEC sp_change_users_login 'auto_fix', 'username_from_above'

これで問題が解決しない場合は、別の方法を試してみます。

0
Sankar Reddy