在本文中,我们将向您展示如何使用“传输 SQL Server 对象”任务将用户定义函数从一个数据库传输到另一个数据库。
使用 SSIS 中的“传输 SQL Server 对象”任务传输用户定义函数
在此 SSIS 示例中,我们将使用“传输 SQL Server 对象”任务将用户定义函数(表值函数和标量值函数)从 [AdventureWorks2014] 传输到 [Duplicate AdventureWorks2014]。
如果您观察下面的屏幕截图,有一个名为 [Duplicate AdventureWorks2014] 的数据库。我们已经使用“传输对象”任务从 [AdventureWorks2014] 传输了表。请参阅“传输对象任务”文章,了解如何传输SQL Server表。如果您想移动存储过程,请参阅“传输存储过程”文章。
在开始创建 SSIS 传输 SQL Server 用户定义函数包之前,让我们先看看 [AdventureWorks2014] 中的函数。

上面的屏幕截图显示 [AdventureWorks2014] 数据库包含一个表值函数和 10 个标量值函数。我们的任务是使用“传输 SQL Server 对象”任务将一个表值函数和 9 个标量值函数(除了 ufnLeadingZeros 函数)从 [AdventureWorks2014] 传输到 [Duplicate AdventureWorks2014]。现在,让我们看看目标数据库。

上面的屏幕截图显示 [Duplicate AdventureWorks2014] 数据库包含一个标量值函数。
步骤 1:打开 BIDS,然后从工具箱将“SSIS 传输 SQL Server 对象”任务拖放到控制流中。

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

这里我们没有更改任何内容。单击“对象”选项卡。
步骤 2:选择 SourceConnection 属性,然后单击它以创建新连接。如果您已经创建了,请选择它。

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

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

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

步骤 6:单击 DestinationDatabase 选项,然后选择要使用的数据库。目前,我们选择 [Duplicate AdventureWorks2014]。

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

如果我们将 CopyAllObjects 选项设置为 False,则下一个属性 ObjectsToCopy 将被启用。
步骤 8:单击 ObjectsToCopy 属性进行配置。在此 SSIS 示例中,我们的要求是传输用户定义函数。因此,我们必须了解“复制所有用户定义函数”和“用户定义函数列表”等选项。如果您必须从源数据库复制所有用户定义函数,请将 Copy All UserDefined Functions 选项设置为 True。

步骤 9:单击 UserDefinedFunctionsList 选项,然后单击 collections。单击 Collections 旁边的 (…) 按钮后,将打开“选择用户定义函数”窗口,从中可以选择源连接中可用的用户定义函数。

在此示例中,我们选择除 ufnLeadingZeros 函数之外的所有函数。但是您可以尝试不同的选项。
步骤 10:单击 OK 关闭“选择用户定义函数”窗口,然后单击 OK 完成“传输 SQL Server 对象”任务的配置。
让我们运行包,看看我们是否已成功将用户定义函数从源传输到目标。

让我们打开 Management Studio 并查找用户定义函数。

从上面的屏幕截图,您可以发现我们已成功在 SSIS 中传输了 SQL Server 用户定义函数。它们包括一个表值函数和 9 个标量值函数。