我想使用 SSIS 包在同一个数据库中创建一个表的副本,比如TestTable,并使用新名称TestTableNew 。我为此创建了一个“传输 SQL Server 对象任务”,源数据库同时指定为SourceDatabase和DestinationDatabase。当我运行此任务时,原始表TestTable被新的 -empty -TestTable覆盖。
这很可能是我忽略的非常明显的事情,但是我可以在这个传输任务的某个地方为目标表指定另一个名称吗?还是我应该用另一种方式解决这个问题?
我想使用 SSIS 包在同一个数据库中创建一个表的副本,比如TestTable,并使用新名称TestTableNew 。我为此创建了一个“传输 SQL Server 对象任务”,源数据库同时指定为SourceDatabase和DestinationDatabase。当我运行此任务时,原始表TestTable被新的 -empty -TestTable覆盖。
这很可能是我忽略的非常明显的事情,但是我可以在这个传输任务的某个地方为目标表指定另一个名称吗?还是我应该用另一种方式解决这个问题?
您不能使用“传输 SQL Server 对象任务”将表复制到同一数据库,因为没有指定新表名称的选项。您会将表“TestTable”复制到表“TestTable”,这将失败,因为它们都具有相同的名称。
您可以将“DropObjectsFirst”属性设置为 true,但这会使您丢失原始表及其数据,我认为您在测试中这样做了,否则您会收到一条失败消息。
这里最好的选择是使用“执行 SQL 任务”根据您的 TestTable 创建 TestTableNew 的结构,然后执行简单的 OleDBSource -> OleDBDestination 转换以将所有数据从一个表加载到另一个表。
我对 SSIS 的了解非常有限,但我假设您可以运行传递参数的 sql 命令,从而动态生成如下内容
select *
insert into TestTableNew
from TestTable