【问题标题】:SQL Command from Variable for MDX OLEDB source SSIS来自 MDX OLEDB 源 SSIS 的变量的 SQL 命令
【发布时间】:2019-01-30 20:02:14
【问题描述】:

我在使用 SSIS 数据流中的 MDX 查询源时遇到了一些问题。

如果我正确配置了 OLEDB 源,并将数据访问模式设置为 SQL 命令,则 MDX 查询可以工作。

不过,我需要对这个源进行参数化,所以我尝试传入一个在运行时填充的变量作为 MDX 源查询。

问题是,当我设置它时,它会尝试使用变量(直到运行时才正确)并抛出此错误。

让 MDX Source 从变量中工作的诀窍是什么?

在第一次使用硬编码查询(SQL 命令)配置源之后,我构建了所有下游转换。然后我回去更改源以使用变量并且它坏了。

感谢您的任何意见。

TITLE: Microsoft Visual Studio
------------------------------

The component reported the following warnings:

Error at DFT SSAS to SQL [SRC SSASPRP01 Cube [2]]: No column information was returned by the SQL command.


Choose OK if you want to continue with the operation.
Choose Cancel if you want to stop the operation.

------------------------------
BUTTONS:

OK
Cancel
------------------------------

【问题讨论】:

  • 也许尝试将查询的静态部分放入两个不同的变量中。然后,您将参数放在第三个变量中。那么查询变量将是所有三个字符串的串联。那么,如果您的参数值在运行时之前不可用,这无关紧要。
  • 尝试为数据流和 OLDDB 源都设置延迟验证。
  • @Scotch 是否能同时设置 DatFlow 和 Connection DelayValidation=True?

标签: sql-server ssis ssas mdx


【解决方案1】:

您想要一个参数化查询,并希望使用该查询构建一个字符串变量。无论如何,您的包需要在运行前进行验证。所以,这里有两个选择:

  • 如果您的查询变量在运行时填充并且它没有表达式,您可以使用有效的 MDX 查询指定此变量值。包和您的 DataFlow 任务将在运行(常规过程)之前使用此默认查询和传递进行验证,并在运行时 - 使用正确的 MDX 查询。
  • 您可以将 DataFlow 任务的 DelayValidation 属性设置为 true。然后它将在运行前立即进行验证,此时您的变量将包含有效的 MDX 查询。

我希望第二种方法更通用。

【讨论】:

    【解决方案2】:

    设置延迟验证 = True。延迟验证是所有 SSIS 组件都可用的属性,它基本上将验证保留到执行。大多数情况下,当我们使用变量设置连接或其他组件时,它会有所帮助。由于变量在运行时没有真正的属性。

    【讨论】:

    • 我没有投反对票,但可能是因为这更像是评论。我个人知道延迟验证设置并将尝试它,但这不是一个非常彻底的答案。您可能需要对其进行编辑以显示如何执行此操作,并解释为什么这是解决方案。同时,我会尝试并报告
    • 这应该是对原始问题的评论。正如 Scotch 所说,一点也不彻底。
    • 将数据流任务的延迟验证设置为 true 并不会阻止它尝试验证 OLEDB 源。源上的 ValidateExternalMetadata 可能会有所帮助。我通过在设计时将变量设置为我想要的结果时验证它来工作。
    • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
    • @CaptainMan,请帮助我理解为什么这不是一个答案。 1)提问的人说有帮助, 2)有另一个人给出相同的答案 3)这正是他需要做的。设置此属性将阻止验证并解决他的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2023-03-13
    相关资源
    最近更新 更多