簡體   English   中英

對象的 EXECUTE 權限被拒絕

[英]EXECUTE permission denied on object

我目前正在處理一個 MVC5、EF6 項目,並且需要一個用於該項目的存儲過程。 我已經編寫了存儲過程,現在當我嘗試在我的代碼中使用它時,我收到一條錯誤消息:

The EXECUTE permission was denied on object .... 

然而,當我在 SQL Management Studio 中測試存儲過程時,它讓我運行存儲過程就好了。 我不確定該怎么做才能解決這個問題,因為我以前從未遇到過這種情況。

首先創建一個執行者角色,然后授予該角色 exec 權限。然后讓您的用戶成為該角色的成員。

CREATE ROLE db_executor;
GRANT EXECUTE TO db_executor;
EXEC sp_addrolemember 'db_executor', 'user1'

希望這已經足夠了,但如果您仍有問題,請檢查以下內容。 SP 和底層對象的架構所有者應該是相同的 sql 鏈接權限才能工作。 通過以下方式檢查架構所有者:

select name, USER_NAME(s.principal_id) AS Schema_Owner from sys.schemas s

要更改架構的所有者,您可以:

ALTER AUTHORIZATION ON SCHEMA::YOUR_SCHEMA TO YOUR_USER;

例子:

ALTER AUTHORIZATION ON SCHEMA::Claim TO dbo
ALTER AUTHORIZATION ON SCHEMA::datix TO user1;

最后,如果在您的 SP 中您要截斷表或更改結構,您可能希望在 SP 中添加 WITH EXECUTE AS OWNER:

ALTER procedure [myProcedure] 
WITH EXECUTE AS OWNER

as

truncate table etl.temp

創建一個具有“執行”訪問權限的單獨用戶角色,然后將其分配給您的當前用戶。 這是最好的解決方案,並幫助了我。

請點擊此鏈接: https : //stackoverflow.com/a/26871428/6761105

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM