当您以具有 Windows 身份验证权限的 SQL Server 2008 R2 管理员身份登录时,我会执行以下命令。
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”无法在当前安全上下文下访问数据库“模型”。
现在有没有办法在创建适配器之前检查用户权限?例如,如果用户只能访问特定数据库或数据库仅显示(或加载)这些数据库?如果用户具有完全权限,则执行我在此处编写的适配器命令。如果我的问题不是那么容易理解,请告诉我,我会尽可能地澄清它。
谢谢