データベースをSQL Server 2012からAzureに移動しました。ユーザーmaster
を使用したくないので、ユーザーtest
を作成しました。これは、私がAzure上のデータベースXXXに対して行ったことです。
create user test from login test with default_schema=[dbo]
exec sp_addrolemember 'db_owner','test'
チェックしましたが、興味のあるデータベースオブジェクトはすべてスキーマdbo
にあります。テーブルUsers
はスキーマdbo
にあります。
Webプロジェクトの接続文字列には、ログインとしてtest
が含まれています。エラーメッセージが生成されます。
The SELECT permission was denied on the object 'Users', database 'XXX', schema 'dbo'
エラーメッセージの意味と、ユーザーtest
がデータベースXXXにアクセスできるようにするにはどうすればよいですか?
問題はdeny特権を持つユーザーにあると思います。このエラーは、作成したユーザーがデータベース内のテーブルにアクセスするための十分な権限を持っていない場合に発生します。必要なものを取得するには、ユーザーに特権を付与してください。
GRANTそのデータベース内のテーブルに対するSELECT、INSERT、UPDATE、DELETEなどのユーザー固有のパーミッション。
選択権限を付与する構文は次のとおりです。
USE YourDB;
GRANT SELECT ON dbo.functionName TO UserName;
これは私が直面したときに問題を解決することができた方法です
そのユーザーに権限を付与する必要があります
データベースのスペースを確認します。このエラーは、データベースに割り当てられたスペースと比較してスペースが増加したときに発生します。
これを行うと問題が解決します。 [重要な注意:特定のアカウントにエスカレートされた(拡張された)権限を許可します。個々のシナリオに必要な権限を超える場合があります]。
SSMSを使用して、ユーザーがデータベースとReportServerの両方に対する接続権限を持っていることを確認しました。
クエリ対象の特定のデータベースのプロパティで、資格情報をマップし、データリーダーとパブリックアクセス許可を有効にしました。また、他の人が述べているように、拒否/拒否ボックスが選択されていないことを確認しました。
レポートには選択権限のみが必要であるため、レポートのデータベース所有権を有効にしたくありませんでした。