SSIS 中的传输 SQL Server 对象任务用于将一个或多个 SQL Server 对象(例如表、视图、存储过程、用户定义函数、索引、用户、登录名等)从一个数据库传输到另一个数据库。Integration Services 中的传输 SQL Server 对象任务允许我们使用相同的实例作为源和目标连接,或者使用不同的实例。
SSIS 中传输 SQL Server 对象任务的一些关键功能是
- 传输 SQL Server 对象任务允许您选择一种对象类型或所有服务器对象。表、视图、存储过程、用户定义函数等是一些对象。
- SSIS 中的传输 SQL Server 对象任务允许您选择所有表,或者传输所有表。有关如何将表从源传输到目标的更多信息,请参阅传输带数据的表文章。
- SSIS 中的传输 SQL Server 对象任务允许您传输表结构,即不带数据的表。有关如何将表结构从源传输到目标的更多信息,请参阅传输表结构文章。
- SSIS 中的传输 SQL Server 对象任务允许您选择所有存储过程。或者,它会将所有存储过程传输到源数据库。有关如何将用户定义存储过程从源传输到目标的更多信息,请参阅传输存储过程文章。
- SSIS 中的传输 SQL Server 对象任务允许您选择所有用户定义函数。或者,它会将源数据库中的所有用户定义函数传输出去。有关如何将用户定义函数从源传输到目标的更多信息,请参阅传输用户定义函数文章。
- 传输 SQL Server 对象任务允许您选择所有视图或传输所有视图。有关如何将视图从源传输到目标的更多信息,请参阅传输视图文章。
配置 SSIS 中的传输 SQL Server 对象任务
将“传输 SQL Server 对象”任务从工具箱拖到“控制流”区域。双击该任务将打开“传输对象任务编辑器”,如下所示,用于配置它。

常规选项卡
此选项卡专门用于更改 SSIS 传输 SQL Server 对象任务的名称并提供描述。在实际应用中,请将任务名称更改为适当的名称,并编写描述以解释任务功能。这有助于其他开发人员更好地理解任务。
例如,如果您要传输表,请这样写
- 名称:传输表
- 描述:将“Employees”和“Sales”表(包含数据)从“[Adventure Works 2014]”传输到数据库。

对象选项卡
在此选项卡中,我们将执行 SSIS 中的所有传输 SQL Server 对象任务操作。让我们分段进行探讨。

连接
- SourceConnection:配置源数据库的连接管理器设置。如果您已创建连接管理器,请从列表中选择,或单击“新建连接...”以创建新的连接。
- SourceDatabase:这是您要从中复制对象(如表、视图和函数)的数据库名称。
- DestinationConnection:配置目标数据库的连接管理器设置。如果您已创建,请从列表中选择。否则,单击“新建连接...”以创建新的连接。
- DestinationDatabase:在目标连接上选择要将选定对象复制到的数据库名称。
注意:SSIS 中的传输 SQL Server 对象任务仅支持 SMO 连接管理器。因此,对于源和目标,请创建 SMO 连接管理器。
目标
- DropObjectsFirst:在复制对象之前,指定您是否要在目标数据库中删除选定的对象。
- IncludeExtendedProperties:指定在复制数据时是否要包含对象的扩展属性。
- CopyData:复制表时,是否要同时传输所选表的数据?如果是,则选择 TRUE。如果选择 FALSE,将传输带有列名的空表。
- ExistingData:将数据复制到目标表时,您可以选择追加或替换数据。如果您选择“追加”选项,则新数据将添加到旧数据中。否则,新数据将替换旧数据。
- CopySchema:将对象的架构从源复制到目标。
- UseCollation:每个数据库都有自己的排序规则设置。将此选项设置为 TRUE,SSIS 传输 SQL Server 对象任务将在目标数据库中使用源数据库的排序规则设置。
- IncludeDependentObjects:如果存在任何依赖对象,通过设置此选项,它还将复制这些依赖对象。
目标复制对象
- CopyAllObjects:您想将源数据库的所有对象复制到目标数据库吗?如果将其设置为 TRUE,所有对象都将一次性传输。如果设置为 FALSE,下一个属性 ObjectsToCopy 将被启用。
- ObjectsToCopy:通过展开此属性,您可以选择源数据库中的单个对象。这些对象类型可能因版本而异。下面的屏幕截图将显示它们。

在此,我们将向您解释 SSIS 中的传输 SQL Server 对象任务可用的服务器对象。
- CopyAllTables:如果您想将源数据库中的所有表传输到目标数据库,请将此选项设置为 TRUE。如果您想移动一个或几个表,请设置为 FALSE,然后从 TablesList 中选择所需的表。
- TablesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有表。您的任务是从列表中选择所需的表。这些选定的表将被传输到目标数据库。
- CopyAllViews:如果您想将源数据库中的所有视图传输到目标数据库,请将此选项设置为 TRUE。如果您想传输一个或几个视图,请设置为 FALSE,然后从 ViewsList 中选择所需的视图。
- ViewsList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有视图。在这里,您的任务是从列表中选择所需的视图。这些选定的视图将被传输到目标数据库。
- CopyAllStoredProcedures:如果您想将源数据库中的所有用户定义存储过程传输到目标数据库,请将此选项设置为 TRUE。要传输一个或几个存储过程,请设置为 FALSE,然后从 StoredProceduresList 中选择所需的用户定义存储过程。
- StoredProceduresList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中的所有用户定义存储过程,您的任务是从列表中选择所需的存储过程。这些选定的用户定义存储过程将被传输到目标数据库。
- CopyAllUserDefinedFunctions:如果您想将源数据库中的所有用户定义函数传输到目标数据库,请将此选项设置为 TRUE。要传输一个或几个用户定义函数,请设置为 FALSE,然后从 UserDefinedFunctionsList 中选择所需的用户定义函数。
- UserDefinedFunctionsList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有用户定义函数,您的任务是从列表中选择所需的用户定义函数。这些用户定义函数将被移动到目标数据库。
- CopyAllDefaults:如果您想将源数据库中的所有默认值传输到目标数据库,请将此选项设置为 TRUE。要移动一个或几个默认值,请设置为 FALSE,然后从 DefaultsList 中选择所需的默认值。
- DefaultsList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有默认值,您的任务是从列表中选择所需的默认值。这些选定的默认值将被移动到目标数据库。
- CopyAllUserDefinedDataTypes:如果您想将源数据库中的所有用户定义数据类型传输到目标数据库,请将此选项设置为 TRUE。如果您要移动一个或几个数据类型,请设置为 FALSE,然后从 UserDefinedDataTypesList 中选择所需的用户定义数据类型。
- UserDefinedDataTypesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有用户定义数据类型,您的任务是从列表中选择所需的用户定义数据类型。这些选定的数据类型将被传输到目标数据库。
- CopyAllPartitionFunctions:如果您想将源数据库中的所有分区函数传输到目标数据库,请将此选项设置为 TRUE。要移动一个或几个分区函数,请设置为 FALSE,然后从 PartitionFunctionsList 中选择所需的分区函数。
- PartitionFunctionsList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有分区函数。您的任务是从列表中选择所需的分区。这些选定的分区将被传输。
- CopyAllPartitionSchemes:如果您想将源数据库中的所有分区方案传输到目标数据库,请将此选项设置为 TRUE。要移动一个或几个分区方案,请设置为 FALSE,然后从 PartitionSchemesList 中选择所需的分区方案。
- PartitionSchemesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有分区方案,您的任务是从列表中选择所需的分区。这些选定的分区将被传输到目标数据库。
- CopyAllSchemas:如果您想将源数据库中的所有数据库架构传输到目标数据库,请将此选项设置为 TRUE。要传输一个或几个架构,请设置为 FALSE,然后从 SchemasList 中选择所需的架构。
- SchemasList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有架构。在这里,您的任务是从列表中选择所需的架构。这些选定的架构将被传输到目标数据库。
- CopyAllSqlAssemblies:如果您想将源数据库中的所有程序集传输到目标数据库,请将此选项设置为 TRUE。要传输一个或几个程序集,请设置为 FALSE,然后从中选择所需的程序集。
- SqlAssembliesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有程序集,您的任务是从列表中选择所需的程序集。这些选定的程序集将被传输到目标数据库。
- CopyAllUserDefinedAggregates:如果您想将源数据库中的所有用户定义聚合函数传输到目标数据库,请将此选项设置为 TRUE。如果您要移动一个或几个聚合函数,请设置为 FALSE,然后从 UserDefinedAggregatesList 中选择所需的聚合函数。
- UserDefinedAggregatesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有用户定义聚合函数。您的任务是从列表中选择所需的聚合函数。这些选定的聚合函数将被移动到目标数据库。
- CopyAllUserDefinedTypes:如果您想将源数据库中的所有用户定义类型传输到目标数据库,请将此选项设置为 TRUE。要移动一个或几个类型,请设置为 FALSE,然后从 UserDefinedTypesList 中选择所需的类型。
- UserDefinedTypesList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有用户定义类型。在这里,您的任务是从列表中选择所需的类型。这些选定的类型将被传输到目标数据库。
- CopyAllXmlSchemaCollections:如果您想将源数据库中的所有 XML 架构集合传输到目标数据库,请将此选项设置为 TRUE。要移动一个或几个 XML 架构,请设置为 FALSE,然后从 XmlSchemaCollectionsList 中选择所需的 XML 架构。
- XmlSchemaCollectionsList:在此选项旁边,有一个“...”按钮。单击该按钮将显示源数据库中存在的所有 XML 架构集合。您的任务是从列表中选择所需的 XML 架构。这些选定的 XML 架构将被移动到目标数据库。
安全性
- CopyDatabaseUsers:通过在 True 和 False 之间切换,指定您是否要将数据库用户从源数据库传输到目标数据库。
- CopyDatabaseRoles:指定您是否要将角色从源传输到目标数据库。
- CopySQLServerLogins:指定您是否要将登录名从源传输到目标数据库。
- CopyObjectLevelPermissions:指定您是否要将对象级权限从源传输到目标数据库。
表选项
- CopyIndexes:通过在 True 和 False 之间切换,指定您是否要将表索引从源复制到目标数据库。
- CopyTriggers:指定您是否要将表上的触发器从源复制到目标数据库。
- CopyFullTextIndexes:指定您是否要将全文索引从源复制到目标数据库。
- CopyAllDRIObjects:指定您是否要将表上的参照完整性从源复制到目标数据库。
- CopyPrimaryKeys:指定您是否要将表上的主键从源复制到目标数据库。
- CopyForeignKeys:您是否要将表上的外键从源复制到目标数据库,是否包含外键。
- GenerateScriptsInUnicode:指定您是否要以 Unicode 格式生成脚本。
注意:执行包含 SSIS 中传输 SQL Server 对象任务的包的用户必须具有删除和创建对象的权限。