【发布时间】:2010-02-10 03:44:53
【问题描述】:
我创建了一个 C# 应用程序,它读取配置文件、获取连接字符串,并为每个连接字符串读取存储的 proc 列表以进行进一步处理。 现在,我面临一些权限问题。在开发应用程序时,我使用的是 dbo 级别用户的连接字符串。现实生活中的连接字符串适用于只有 datareader 和 datawriter 权限的 sql 用户,但是当我执行时
select user_name(uid) as owner, name from dbo.sysobjects where type='P' order by name asc
要使用此类用户获取 procs 列表,查询不返回任何记录(尽管如果我以 dbo 身份执行,它会返回 procs)
出于安全原因,我不想在连接字符串中为用户提供额外的权限,所以我的问题是 - 只有数据读取器/数据写入器权限的用户如何获得存储过程的列表,或者如果不可能,用户访问该信息的最低权限是多少?
我使用的是 SQL Server 2008
【问题讨论】:
-
顺便说一句:在 SQL Server 2005 及更高版本上,我会使用
sys.procedures而不是已弃用的“sysobjects”。在此处查看有关 sysobjects 的 MSDN 文档:msdn.microsoft.com/en-us/library/ms177596.aspx
标签: sql-server-2008 database-permissions