2011-05-10 69 views
0

我已將2005數據庫還原到新的2008 R2數據庫服務器。我創建了一個名爲「看門人」的新用戶SQL Server 2008 R2用戶不能使用系統過程

但是,此用戶無權訪問數據庫中的存儲過程列表。

在運行查詢的報告程序運行以下步驟之前,報告應用程序...

exec [Timesheet]..sp_procedures_rowset N'mp_GetTimesheetToPrint',1,N'dbo'

當根據本不返回行把關用戶運行。但是,當以sa運行時,它會返回該過程。

什麼是我需要給門衛這個程序正常工作的最低權限。它似乎是所有系統對象的問題,它們都不能運行或給出權限錯誤,它們只返回結果或結果的子集。

真的很掙扎着。在此先感謝

問候

菲爾

+0

那麼'gatekeeper'用戶對'mp_GetTimesheetToPrint'具有'exec'權限? – 2011-05-10 12:49:40

+0

查看下面的評論 – NoseBagUK 2011-05-10 14:36:13

回答

1

我誠實一點通過你的描述相混淆,所以請讓我知道如果我是關閉基地在這裏。你可以試試下面。它將授予對所有存儲過程的執行訪問權限。如果您只需要看門人訪問一個存儲過程,那麼只需在該存儲過程上授予執行權限即可。如果存儲過程正在訪問其他數據庫中的數據,則可能需要授予對這些表的權限,並且它正在訪問其數據庫外部。

CREATE ROLE db_executor 
GRANT EXECUTE TO db_executor 
EXEC sp_addrolemember 'db_executor', 'gatekeeper' 
+0

嗨,謝謝你回到我身邊。有點進一步的解釋..這是一個水晶報告,網守有mp_GetTimesheetToPrint執行權限,它可以很好地運行它,似乎正在發生的事情,當我運行一個跟蹤,是水晶之前它運行的報告程序嘗試獲取有關sp的元信息。它運行'sp_procedures_rowset',但此過程在作爲網閘運行時不返回任何行,但在以sa身份運行時不會返回行。 – NoseBagUK 2011-05-10 14:08:08

+0

如果我將門衛作爲securityadmin角色,那麼它可以正常工作,但我並不真的想這樣做。 – NoseBagUK 2011-05-10 14:13:52