0

我创建了一个 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

4

3 回答 3

1

我将创建一个附加到我的应用程序拥有的凭据的存储过程,该过程将接收用户参数并查询 sysobjects 以返回可用的过程。这些过程的后续执行可以通过您提到的特定连接字符串来完成。

于 2010-02-05T19:57:10.797 回答
0

使用这个脚本:

select user_name(schema_id) as owner, name from sys.procedures
于 2010-02-07T05:43:48.597 回答
0

实际上我已经想通了 - 用户需要被授予我们想要列出的每个存储过程的权限

于 2010-02-09T19:44:53.067 回答