2010-02-05 98 views
0

我创建了一个C#应用程序,它读取一个配置文件,获取连接字符串,并为每个连接字符串读取存储过程列表以供进一步处理。 现在,我正面临一些权限问题。在开发应用程序时,我正在使用具有dbo级别用户的连接字符串。现实生活中的连接字符串是SQL用户只DataReader的和datawriter权限,但是当我执行数据库访问权限问题(sql server 2008)

select user_name(uid) as owner, name from dbo.sysobjects where type='P' order by name asc 

获得使用这样的用户特效列表,该查询返回任何记录(虽然它返回的特效,如果我以dbo身份执行)

出于安全原因,我不想为连接字符串中的用户提供额外的权限,所以我的问题是 - 只有具有datareader/datawriter权限的用户如何获取存储的特效列表,或者如果不可能,用户必须拥有访问该信息的最低权限是什么?

我使用SQL Server 2008

+0

作为预留每个存储过程:SQL Server 2005上最多,我会使用'sys.procedures'而不是弃用的“sysobjects”。请参阅sysobjects上的MSDN文档:http://msdn.microsoft.com/en-us/library/ms177596.aspx – 2010-02-05 21:49:08

回答

0

其实我已经想通了 - 用户需要被授予的权限,我们希望上市

1

我会创建一个附加到我的应用程序拥有的凭据,将采取在用户参数和查询系统对象返回可用特效的存储过程。这些特效的后续执行可以通过您提到的特定连接字符串完成。

0

使用这个脚本:

select user_name(schema_id) as owner, name from sys.procedures