2010-02-05 178 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