【问题标题】:SSIS merge joinSSIS 合并连接
【发布时间】:2019-03-02 15:01:18
【问题描述】:

我们的测试服务器上有 SQL Server 2012,我在 2017 年开发了一个 SSIS 包,在我的本地计算机上将部署目标版本设置为 2012。

在包中我有一个 mergeJoin 对象。整个包在我的本地机器上运行良好,当我在 2012 年通过 SQL 服务器代理将它设置在测试机器上时,它给出了一个错误提示

要在 SQL Server Data Tools 之外运行 SSIS 包,您必须安装 Integration Services 或更高版本的 Merge Join

集成服务安装在 SQL Server 2012 上。

是否有解决方案,或者是否有使用合并连接对象的解决方法,如果我可以用另一个对象替换..请提出建议。

【问题讨论】:

  • 检查在您的代理作业中调用包的命令行,并确保它正在寻找正确的版本 dtexec.exe。类似问题:stackoverflow.com/questions/35469249/…
  • 我对“测试”服务器的访问权限有限,但是如何检查命令行?
  • 我看到你的问题已经解决了,但如果你仍然想知道,它需要访问机器上的 SQL 代理。打开作业。打开执行包的步骤。界面中有许多选项卡,如果内存服务最右边或几乎如此,选项卡显示作业步骤正在执行的命令行调用。但是不必费心了。
  • 非常感谢,是的,我在作业属性下看到了命令行选项卡,所以我只是抓住它并在cmd中输入它?我实际上根本看不到它有 dtexec.exe。它只是一个 /FILE "\"\\ 包的路径 /CONFIGFILE 配置文件的路径,然后 /CHECKPOINTING OFF /REPORTING E

标签: sql-server merge ssis


【解决方案1】:

好的,原来测试机器没有安装 SSIS。令人困惑的是,在 SQL Server 代理下还有其他使用 SSIS 的作业在测试中成功运行,只是这个带有合并连接的作业失败了。

我的结论是包将在 SQL 作业代理下运行,这些代理很简单,无需在未安装 SSIS 的机器上进行繁重的工作,但为了让包运行合并连接或“不太直接”的对象,SSIS 有要安装以运行包。

【讨论】:

    【解决方案2】:

    关于不使用合并联接,如果您要联接的数据源来自同一个关系数据库,那么您可以在源查询中使用联接而不是使用合并联接。如果您要加入的源来自平面文件或不同的数据库,那么您需要先将数据加载到暂存区,然后创建一个新的数据流任务,您可以在源查询中使用 JOIN 来加入数据源.

    【讨论】:

    • 在我的数据流中,实际上我有来自两个不同来源的数据。一个来源是服务器 1 上的 db,另一个来源是服务器 2 上的 db。所以我正在尝试对来自服务器 1 和服务器 2 的结果进行合并连接。
    • 我在回答中提到了这种情况。如果您可以通过合并连接错误,那将是理想的,但如果您不能,那么这是避免使用合并连接的简单解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多