在本文中,我们将向您展示如何使用 SSIS 中的 SQL Server 对象传输任务,在不传输数据的情况下,将 SQL Server 表结构从一个数据库传输到另一个数据库。如果您想传输包含数据的 SQL Server 表,请参阅“传输带数据的表”一文。
使用 SSIS 中的 SQL Server 对象传输任务传输表结构
如果您注意到下面的截图,我们有一个空数据库 (TRANSFERDBTASKS)。在此示例中,我们将使用 SSIS 中的 SQL Server 对象传输任务,将 [Adventure Works DW 2014] 数据库中的几个表(不带数据)传输到 [TRANSFER DB TASKS] 数据库。

步骤 1:打开 BIDS,然后将 SQL Server 对象传输任务从工具箱拖放到控制流中。

双击“SQL Server 对象传输”,这将打开编辑器以进行配置。
“常规”选项卡:在此选项卡中,您可以根据项目需求编写名称和描述。

在这里,我们更改了名称和描述以向您展示它们的功能。单击“对象”选项卡
步骤 2:选择 SourceConnection 属性,然后单击它以创建新连接。如果您已经创建了一个,请选择它。

单击“
步骤 3:在此示例中,我们选择本地主机实例并使用 Windows 身份验证。如果您在组织工作,请选择服务器身份验证并提供凭据。

单击“测试连接”按钮以检查连接是否引发错误。
步骤 4:单击 SourceDatabase 选项,然后选择要使用的数据库。目前,我们选择 [Adventure Works DW 2014]。

步骤 5:选择 DestinationConnection 属性,然后单击它以创建新连接。如果您已经创建了,请选择它。
我们在 SourceConnection 中已经提到了本地主机实例,在这里,我们将使用相同的实例。如果您想创建一个新的,请单击,然后打开 SMO 连接管理器编辑器窗口来配置连接。

步骤 6:单击 DestinationDatabase 选项,然后选择要使用的数据库。现在我们选择 [TRANSFER DB TASKS],如下图所示。

步骤 7:单击 CopyData 属性,并检查该选项是否为 False。因为在此示例中,我们愿意传输数据库表而不传输数据,从源到目标。
将 CopyData 属性设置为 False,SQL Server 对象传输任务将复制表而不复制数据。

步骤 8:如果您需要从源数据库复制所有对象(视图、函数、存储过程、表),请将 CopyAllObjects 选项设置为 True。在此示例中,我们将发送几个表。因此,我们将其保留为默认的 False。

如果我们将 CopyAllObjects 选项设置为 False,则下一个属性 ObjectsToCopy 将被启用。
步骤 9:单击 ObjectsToCopy 属性进行配置。ObjectsToCopy 属性将探索 SQL Server 对象传输任务的许多选项。让我们专注于属于或与此示例相关的选项。在此示例中,我们的要求是传输表。因此,我们只需要理解前两个选项,即 CopyAllTables 和 TableList。
如果您必须从源数据库复制所有表,请将 CopyAllTables 选项设置为 True。在此示例中,我们将发送几个表。因此,我们将其保留为默认的 False。

注意:如果您将 CopyAllTables 选项设置为 True,则从 TableList 选项中选择表就没有意义了。
步骤 10:单击 TableList 选项,然后单击集合。单击“集合”旁边的 (…) 按钮后,将打开“选择表”窗口,以从源连接中选择可用表。

在本示例中,我们只选择了三个表([Dim Product Category]、[Dim Product Subcategory] 和 [Dim Reseller])。但是您可以尝试选择更多表。
步骤 11:单击“确定”关闭“选择表”窗口,然后单击“确定”完成配置 SQL Server 对象传输任务。
让我们运行 SSIS 包,看看是否成功将表结构(不带数据)从源传输到了目标。

让我们打开 Management Studio 并检查表。

从上面的截图,您可以看出我们只是在 SSIS 中传输了 SQL Server 表结构,而没有传输数据。