SQL Server 2008 R2 への Windows 認証権限を持つ管理者としてログインすると、次のコマンドが実行されます。
var sqlAdapter =
new SqlDataAdapter(@"select dtb.name as [Name],
CAST(case when dtb.name in ('master','model','msdb','tempdb') then 1
else dtb.is_distributor end AS bit) AS [IsSystemObject]
from model.sys.databases dtb", connection);
sqlAdapter.Fill(table);
しかし、sp_datareader 権限のみを持つ datareader としてログインしようとすると、例外が発生します。
サーバー プリンシパル "datareader" は、現在のセキュリティ コンテキストではデータベース "model" にアクセスできません。
アダプターを作成する前にユーザー権限を確認する方法はありますか? たとえば、ユーザーが特定のデータベースにしかアクセスできない場合、またはデータベースのみがそれらのデータベースを表示 (またはロード) する場合は? ユーザーが完全な権限を持っている場合は、ここに書いたアダプターのコマンドを実行します。私の質問が簡単に理解できない場合は、できる限り明確にしようと思いますので教えてください。
ありがとうございました