我创建了一个C#应用程序,它读取配置文件,获取连接字符串,并为每个连接字符串读取存储过程的列表以进行进一步处理。 现在,我面临一些权限问题。在开发应用程序时,我使用了与dbo级别用户的连接字符串。实际连接字符串适用于仅具有datareader和datawriter权限的sql用户,但是当我执行
时select user_name(uid) as owner, name from dbo.sysobjects where type='P' order by name asc
使用这样的用户获取一个proc列表,查询不返回任何记录(如果我执行为dbo则返回procs)
出于安全原因,我不想为连接字符串中的用户提供额外的权限,所以我的问题是 - 只有具有datareader / datawriter权限的用户如何获得存储过程的列表,或者如果不可能,用户访问该信息必须具有的最低权限是什么?
我正在使用SQL Server 2008
答案 0 :(得分:1)
我将创建一个附加到我的应用程序所拥有的凭据的存储过程,该存储过程将接受用户参数并查询sysobjects以返回可用的过程。这些过程的后续执行可以通过您提到的特定连接字符串来完成。
答案 1 :(得分:0)
使用此脚本:
select user_name(schema_id) as owner, name from sys.procedures
答案 2 :(得分:0)
实际上我已经弄明白了 - 用户需要被授予对我们想要列出的每个存储过程的权限