从T-SQL存储过程执行Analysis Services OpenQuery

时间:2014-04-29 19:21:40

标签: sql-server tsql stored-procedures service analysis

晚上好,

我有一个T-SQL存储过程,它通过OPENQUERY从Analysis Services服务器执行PREDICTION JOIN查询。

当我手动执行存储过程时,它会成功完成并更新数据库中的相关表。

但是,我每天早上都有存储过程作为预定作业运行。调用作业时,它失败并显示以下错误消息:

  

以用户身份执行:NT SERVICE \ SQLSERVERAGENT。无法初始化   OLE DB提供程序的数据源对象" MSOLAP"用于链接服务器   " ANALYSIS_SERVICES&#34 ;. [SQLSTATE 42000](错误7303)OLE DB提供程序   " MSOLAP"对于链接服务器" ANALYSIS_SERVICES"返回消息   "用户NT SERVICE \ SQLSERVERAGENT没有   访问Analysis数据库或数据库不存在。"。   [SQLSTATE 01000](错误7412)。步骤失败了。

我认为它有一些与SQLServerAgent权限有关的东西......我已经尝试将自己设置为自己作为所有者希望这将提供相关权限,尽管这并不起作用。

在那之后,我完全没有想法......不幸的是,我对服务器角色和权限的理解相当有限,任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

有几种可能的解决方案:

  1. 创建一个链接服务器连接,模拟在SSAS实例中具有权限的帐户。

  2. 创建代理帐户并在代理上下文中执行代码。代理可以是在SSAS实例中具有权限的帐户。使用代理执行作业步骤。如果作业步骤是T-SQL命令,则将代码移动到SSIS包并将包作为代理运行。

  3. 更改SQL Server代理以使用域帐户。授予SSAS实例中域帐户的权限。