【问题标题】:Periodically run query to transfer data between two SQL Servers定期运行查询以在两个 SQL Server 之间传输数据
【发布时间】:2011-06-29 13:59:54
【问题描述】:

我有两个 MS SQL Server,我们称它们为 SourceDestination。我需要通过进行简单查询(SelectSum)从 Source 中的数据库表中获取一些数据并将结果带到目标中的数据库表。

我需要每月运行一次查询,以使Destination中的数据可供应用程序使用。

我正在考虑在 应用程序层 通过创建一个工作流(这很复杂,对于这样一个简单的问题不值得),但我想知道是否有更简单的选择SSIS 或任何其他工具。我特别不清楚如何设置触发器来运行查询以及放置查询代码的位置。

【问题讨论】:

    标签: sql-server data-transfer


    【解决方案1】:

    您应该只使用 SQL Server 作业调度功能,而不是编写自己的触发和处理逻辑。

    创建 SSIS 包(或 dtsx 文件)是一个不错的选择。您可能只需要从数据库任务中执行导入/导出向导,将其保存为可重复使用的 SSIS 包,然后使用计划作业每月运行一次。

    因此,作业是您的触发器,并且还调用 SSIS 导入/导出包来运行...您的查询代码。

    【讨论】:

    • 忘记作业调度 - 复制是一个内置功能。
    • @Joel:作业也是一个内置功能。复制也可以工作,但我认为在这种情况下它有点矫枉过正,实际上与 OP 提到的要求的 Sum 聚合一起使用会更难。使用作业还允许您只管理一台服务器上的单个作业对象。复制需要在两端进行非平凡的配置。
    • 感谢您的回答。我应该使用执行包实用程序吗?
    • 我应该在哪里放置和执行包?源服务器还是目标服务器?
    • @Francesco:如果你创建一个作业来运行你的包,你不应该需要任何特殊的实用程序。那将是你的效用。我会把工作放在“目标”服务器上。拉(而不是推)通常更容易且问题更少。
    【解决方案2】:

    计划作业/SSIS 解决方案的替代方案是在 Destination 中创建一个 view,通过 映射回 Source >链接服务器openrowset调用。这样您就不需要移动数据,并且可以在您喜欢的时候从 Source 实时访问它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      相关资源
      最近更新 更多