晚上好,
我有一个T-SQL存储过程,它通过OPENQUERY从AnalysisServices服务器执行PREDICTIONJOIN查询。
当我手动执行存储过程时,它会成功完成并更新数据库中的相关表。
但是,我每天早上都要将存储过程作为计划作业运行。当调用作业时,它将失败,并显示以下错误消息:
以用户身份执行:NT SERVICE\SQLSERVERAGENT。无法初始化链接服务器的OLE DB访问接口"MSOLAP"的数据源对象"ANALYSIS_SERVICES"。[SQLSTATE 42000](错误7303(OLE DB访问接口链接服务器"ANALYSIS_SERVICES"的"MSOLAP"返回消息"用户NT SERVICE\SQLSERVERAGENT没有对分析数据库或数据库的访问权限不存在。"。[SQLSTATE 01000](错误7412(。步骤失败。
因此,我认为这与SQLServerAgent权限有关。。。我试着将自己设置为所有者,希望这能给我相关的权限,尽管这不起作用。
在那之后,我就没什么想法了。。。不幸的是,我对服务器角色和权限的了解相当有限,如有任何帮助,我们将不胜感激。
有几种可能的解决方案:
-
创建一个链接服务器连接,模拟在SSAS实例中具有权限的帐户。
-
创建一个代理帐户并在代理上下文下执行代码。代理可以是在SSAS实例中具有权限的帐户。使用代理执行作业步骤。如果作业步骤是T-SQL命令,则将代码移动到SSIS包中,并将该包作为代理运行。
-
将SQL Server代理更改为使用域帐户。向SSAS实例中的域帐户授予权限。