2014-04-29 159 views
1

晚上好T-SQL執行分析服務OPENQUERY,從存儲過程

我有一個T-SQL存儲過程,而執行的預測通過OPENQUERY JOIN從Analysis Services服務器查詢。

當我手動執行存儲過程的成功完成,並在我的數據庫更新相關表格。

不過,我有存儲過程作爲計劃的作業每天早晨運行。當調用作業時失敗,並顯示以下錯誤消息:

以用戶身份執行:NT SERVICE \ SQLSERVERAGENT。無法爲鏈接服務器 「ANALYSIS_SERVICES」初始化OLE DB提供程序「MSOLAP」的 數據源對象。 [SQLSTATE 42000](錯誤7303)OLE DB提供程序 鏈接服務器「ANALYSIS_SERVICES」的「MSOLAP」返回消息 「用戶NT SERVICE \ SQLSERVERAGENT沒有 訪問分析數據庫或數據庫不存在。」。 [SQLSTATE 01000](錯誤7412)。該步驟失敗。

我認爲它有一些因此與SQLSERVERAGENT權限做...我試圖爲所有者與自己設定的工作希望這能給相關權限,儘管這沒有奏效。

在那之後,我所有的想法......不幸的是我的服務器角色和權限的理解是相當有限和任何幫助將不勝感激。

+0

你能嘗試運行它作爲「山」? – Zak

+0

您的主體'NT SERVICE \ SQLSERVERAGENT'需要'ANALYSIS_SERVICES'服務器上的權限。 –

+0

您正在運行代理的帳戶是否存在於鏈接服務器上,並且具有適當的權限? (@Zak,MSAS需要Windows身份驗證,而不是SQL Server) – Andrew

回答

0

有幾種可能的解決方案:

  1. 創建模仿已在SSAS實例權限的帳戶鏈接服務器連接。

  2. 創建一個代理帳戶和代理的上下文中執行代碼。該代理可以是在SSAS實例中擁有權限的帳戶。使用代理來執行作業步驟。如果作業步驟是T-SQL命令,那麼將代碼移動到SSIS包並運行該包作爲代理。

  3. 更改SQL Server代理使用域帳戶。授予SSAS實例中域帳戶的權限。