Sql-Server
PowerBI 服務帳戶幾乎不斷地授予對儲存過程的重複執行權限
我的伺服器上安裝了 PowerBi Server(2019 年 1 月)。我可以從預設跟踪中看到 PowerBi 服務帳戶
NT SERVICE\PowerBIReportServer
正在將儲存過程ExtendEditSessionLifetime
的執行權限授予RSExecRole
(在ReportServer
數據庫中):GRANT EXECUTE ON [dbo].[ExtendEditSessionLifetime] TO RSExecRole
這在一個小時內經常發生很多次,大多數時間(大約每小時 50 次)似乎沒有我能看到的模式,而且我在網上找不到任何關於儲存過程功能的文件。我在 PowerBI 日誌文件或事件查看器中也看不到任何明顯的東西。
什麼可能導致這種情況(或者它是預期的行為?)
我已經弄清楚這裡發生了什麼。
GRANT
tl/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
.