1. ホーム
  2. sql-server

[解決済み] データベースのアタッチ時にアクセスが拒否される

2022-06-23 16:43:23

質問

私は SQL Server 2008 developer edition を使用しています。私は AdventureWorks2008 データベースを添付しようとしていました。

アタッチしようとすると、"access is denied" というエラーが表示されました。イベント ログによると、それは O/S から来たものです。

オープンに失敗しました。ファイル番号 0 のファイル D:\ProjectDataAdventureWorksLT2008_Data.mdf を開くことができませんでした。5(Access is denied.).

NTFS の問題かと思いましたが、システム (および私) は両方のファイルへのアクセス権を変更できます。

saとしてログインすれば、データベースのアタッチに成功することがわかりましたが、私のユーザーアカウントではうまくいきません。

私は私のマシンのローカル管理者グループのメンバーであり、SQL Server インスタンスの sysadmins ロールにいます。

なぜ私が sa としてログインしなければならないのか、何か思い当たることはありますか?

どのように解決するのですか?

たくさんのコメントありがとうございました。 何人かの方のおかげで、答えにたどり着くことができました。 以下は、私が見つけたものです。

それは NTFS のパーミッションの問題であり、SQL の問題ではありませんでした。 さらに、それは一種のバグのように見えます (そしてそれは再現可能です)。

問題です。 私が使用していたアカウントは、mdf および ldf ファイルに対するフル コントロールの NTFS パーミッションを持っていました。 しかし、グループ メンバーシップを通じてこれらの権限を持っていました (Local Administrators グループに権限があり、私のアカウントはローカル アドミンのメンバーです)。 (私はパーミッションを確認しました)。

アタッチしようとすると、私として SQL Server に接続し (ここで私は admins グループにいます)、NTFS の問題で失敗します。

しかし、もし私がローカルの管理者グループが持っているのと同じファイルパーミッションを直接私のドメインアカウントに与えると、問題なくアタッチすることができます。

(ああ、そうです、私はこのマシンのローカル グループをチェックし、私のドメイン アカウントが確かにローカル管理者グループのメンバーであることを確認しました)。

したがって、エラーは、いくつかのコード (SQL Server または Management Studio) がユーザー アカウントが保持している権限をチェックするが、ユーザー アカウントが継承するグループ権限をチェックするまでには至らないために発生するように見えます。

それは私には奇妙に聞こえますが、何度も何度も再現できるので、それが答えであると結論づけました。

更新しました。 バグとして報告しました。 https://connect.microsoft.com/SQLServer/feedback/details/539703/access-denied-attaching-a-database-when-permissions-are-inherited