给定两个 MS SQL 服务器,每个服务器都有不同的数据库,如何创建一个 SSIS 包,以便可以运行一个复杂的查询来填充一个临时表,然后将该数据作为批量插入传输到另一台服务器上的永久表中?
今天,这是通过运行一个为每一行生成插入语句的外部程序来完成的,但这很慢并且会导致大量的事务日志记录。
我一直在寻找有关如何在线执行此操作的资源,但像往常一样,MS 文档的帮助不大。
我有 visual studio 2013 和 2015,但我无法找到任何 SSIS 包创建工具,即使在安装“DACFramework”和“SSDT”之后也是如此。
如果您已经为 VS 2013 安装了 SQL BI Pack - http://www.microsoft.com/en-nz/download/details.aspx?id=42313
创建 SSIS 包你只需要:
SSIS(和类似工具)的主要思想——不仅是从服务器到服务器加载数据,还包括动态转换和检查,其中一些转换很难(或不可能)由仅使用 SQL 的工具完成。
当您不需要任何转换时,SSIS 中的批量插入意味着从文本文件加载
如果您的服务器具有良好的网络连接,链接服务器是一个很好的解决方案,它让您不必担心第 3 方工具(SSIS 以及与 SQL Server 引擎相关的第 3 方)。
其他方式 - 将复杂 SELECT 的结果卸载到文本文件中,然后使用批量加载结果平面文件到目标服务器中。
BCP 实用程序具有将查询结果导出到文件 (
queryout
) 的选项。我建议将复杂查询打包为存储过程,以将“内容”与“方式”分开。然后根据您选择的文件格式,使用 BCP 或 BULKIMPORT 从源导入它。BCP 只是一个命令行程序,因此可以从 SQL Server 外部或 SQL Agent 进行调度。
Agent 也可以直接运行 SSIS 包。导入/导出向导可能能够创建 SSIS 包。