SSIS 联合所有 vs sql 服务器联合所有

SSIS union all vs sql server Union All

我使用 SQL Server 2012 和 SSIS。我在同一台服务器和同一数据库中有两个表。我需要将两个 table 的所有记录转移到第三个 table.

我需要向 UNION ALL 的结果添加一些列(如执行 ID 和一些包参数),然后我必须将记录传输到第三个 table。

我有两个解决方案,但我不知道哪个更有效。

解决方案 1:使用两个 OLE DB DataSource 并在 SSIS

中使用 Union All Component

解决方案 2:在 SQL 服务器端使用 Union All,在 SSIS 中只使用一个 OLE DB Source

哪个效率更高?

尽可能支持数据库操作。如果 2 个表在同一个数据库中,则绝对没有理由支持 SSIS 操作而不是查询优化器。 Union All 是一个无阻塞操作,所以在这种情况下几乎没有区别,但如果这是一个连接或更复杂的操作,那么查询优化器就会发挥作用。

根据经验使用数据库解决方案。

你也可以考虑在简单的执行SQL任务中进行。

Insert into T3
select * from T1
union all
select * from T2

很抱歉不同意 Cafe Con Leche,但是一旦您熟悉了 SSIS,您就应该始终使用 SSIS 任务而不是 TSQL。除了排序操作之外,SSIS 通常速度更快,并且提供非常容易设置的错误处理(包括 'bad' 行被重定向到 processed/fixed 之后)和日志记录。几乎任何可以在 SSIS 中完成的事情都可以在 TSQL 中完成(特别是如果您习惯使用 sp_cmdshell),但是在 SSIS 内置的 TSQL 中进行日志记录和错误处理要困难得多。