【问题标题】:Executing Analysis Services OpenQuery from T-SQL Stored Procedure从 T-SQL 存储过程执行 Analysis Services OpenQuery
【发布时间】:2014-06-15 21:53:01
【问题描述】:

晚上好,

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

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

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

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

我认为它因此与 SQLServerAgent 权限有关...我已尝试将自己设置为所有者,希望这将提供相关权限,尽管这不起作用。

在那之后,我完全没有想法......不幸的是,我对服务器角色和权限的理解相当有限,非常感谢任何帮助。

【问题讨论】:

  • 您可以尝试将其作为“sa”运行吗?
  • 您的主体NT SERVICE\SQLSERVERAGENT 需要ANALYSIS_SERVICES 服务器上的权限。
  • 您运行代理的帐户是否存在于链接服务器上,并且具有适当的权限? (@Zak,MSAS 需要 Windows 身份验证,而不是 SQL Server。)
  • 谢谢大家的回复...我真的不知道如何向 Analysis_Services 服务器添加权限?似乎没有添加对象本身的选项?我相信链接服务器上确实存在该帐户...我运行了 EXEC sp_addlinkedsrvlogin 'Analysis_Services' 、 'FALSE' 、 'NT SERVICE\SQLSERVERAGENT' 命令,应该这样做吗?

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


【解决方案1】:

有几种可能的解决方案:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-08
    • 2015-09-21
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多