Sql-Server

PowerBI 服務帳戶幾乎不斷地授予對儲存過程的重複執行權限

  • October 29, 2020

我的伺服器上安裝了 PowerBi Server(2019 年 1 月)。我可以從預設跟踪中看到 PowerBi 服務帳戶NT SERVICE\PowerBIReportServer正在將儲存過程ExtendEditSessionLifetime的執行權限授予RSExecRole(在ReportServer數據庫中):

GRANT EXECUTE ON [dbo].[ExtendEditSessionLifetime] TO RSExecRole

這在一個小時內經常發生很多次,大多數時間(大約每小時 50 次)似乎沒有我能看到的模式,而且我在網上找不到任何關於儲存過程功能的文件。我在 PowerBI 日誌文件或事件查看器中也看不到任何明顯的東西。

什麼可能導致這種情況(或者它是預期的行為?)

我已經弄清楚這裡發生了什麼。GRANTtl/dr - 儲存過程和關聯語句之間缺少批處理分隔符。

如果我執行:

SELECT * 
FROM sys.sql_modules 
WHERE definition LIKE '%GRANT EXECUTE ON \[dbo\].\[ExtendEditSessionLifetime\] TO RSExecRole%' ESCAPE '\'

我可以看到其中包含該授權語句的儲存過程。

這返回了一條記錄,定義欄位開始

CREATE PROC [dbo].[ExtendEditSessionLifetime]      @EditSessionID varchar(32)...... 

如果我導航到對象樹中的這個儲存過程並右鍵點擊並編寫腳本,我可以看到儲存過程的文本:

CREATE PROC [dbo].[ExtendEditSessionLifetime]
   -- params
AS
BEGIN
   --code
END
   
GRANT EXECUTE ON [dbo].[ExtendEditSessionLifetime] TO RSExecRole
GO

我不知道這一點,但似乎當你創建一個儲存過程時,你可以在GRANT之後放置一個END它成為定義的一部分(我認為它必須是BEGIN .... END構造的一部分(當有一個時)

因此,每次ExtendEditSessionLifetime執行時,它都會重新授予RSExecRole.

引用自:https://dba.stackexchange.com/questions/242072