如何使用SSDT 2017在SQL Server实例的主数据库之间传输存储程序

865 阅读5分钟

在这篇文章中,我们将学习如何复制在SQL Server主数据库中创建的用户存储过程。

演示设置

为了演示,我在Nisarg-PC\SQL01的主数据库上执行了Ola-hallengren数据库维护脚本。你可以下载最新版本的维护脚本。这些脚本创建了一些存储过程和表。脚本执行成功后,你可以通过执行以下查询来查看它们。

Select name as [Procedure Name]  from master.sys.procedures

View all Stored procedures

我们将把上述存储过程迁移到Nisarg-PC\SQL02服务器的主数据库中。

创建集成服务包

现在,首先,让我们创建一个集成服务包。打开SSDT 2017 🡪 点击 Crete New Project 🡪 选择 Integration services 项目。项目的名称将是迁移主数据库存储过程。

New SSIS project in SSDT 2017

拖动转移主数据库存储过程任务并将其放在控制流表面,将其重命名为迁移维护存储过程。

Add Transfer master stored procedure task in SSDT 2017 control flow

双击转移主数据库存储过程任务来配置它。

为了在实例之间转移存储过程,我们必须配置源和目标连接。要做到这一点,点击SourceConnection并选择New Connection。首先,让我们看看我们如何配置源连接。

配置SourceConnection

要配置与源服务器的连接,请点击SourceConnection并选择新连接。

Configure source connection

在SMO连接管理器编辑器对话框中,指定源服务器的名称,并指定用于连接到SQL服务器的认证方法。在我们的演示中,服务器名称是Nisarg-PC\SQL01,认证方法是Windows认证

SMO Connection  manager for source connection

单击 "确定"以保存连接属性并关闭对话框。

配置DestinationConnection

要配置目标服务器的连接,点击DestinationConnection并选择New connection。

Configure Destination connection

在SMO连接管理器编辑器对话框中,指定源的服务器名称,并指定用于连接到SQL服务器的认证方法。在我们的演示中,服务器名称是Nisarg-PC\SQL02,认证方法是Windows认证

SMO Connection  manager for destination connection

单击 "**确定 "**保存连接属性并关闭对话框。连接部分看起来像下面这样。

Source and destination connection

在存储过程部分,你可以得到以下选项。

  1. IfObjectExists:当我们要转移的对象已经存在时,你可以选择由Transfer Master存储过程任务执行的以下任何一项操作
    1. FailTask:如果存储过程在目标实例上存在,工作将失败。
    2. 覆盖:如果存储过程存在于目标服务器上,该任务将覆盖现有的存储过程。
    3. 跳过:如果存储过程在目标服务器上存在,该任务将跳过该特定存储过程的转移。
  2. TransferAllStoredProcedures:如果你想转移所有用户定义的存储过程,请选择True。如果你想转移特定的存储过程,选择 "假"。
  3. 存储过程列表:如果你想转移特定的存储过程,你可以选择你要转移的SP。当你为TransferAllStoredProcedures参数选择False值时,该选项启用

我们想跳过我们演示中的现有存储过程的转移,所以选择跳过。我们想转移所有的存储过程,所以在TransferAllStoredProcedures选项中选择True。

Stored procedures

转移主存储过程任务编辑器看起来像下面的图片。

Transfer Master Stored Procedure task

现在,当存储过程被转移时,我们应该得到通知。要做到这一点,我们将配置通知操作员任务。

配置通知操作员任务

首先,拖动通知操作员任务,把它放到控制流表面,把它重命名为发送电子邮件,然后双击它。

SSIS package created in SSDT 2017

首先,我们必须配置已创建操作员的服务器之间的连接。要做到这一点,点击通知操作员任务对话框中的新建。另一个对话框 "连接属性 "就会打开。指定以下参数的适当值。

  1. 连接名称。指定所需的连接名称。在我们的演示中,我将其命名为SQLConnection。
  2. 服务器名称。指定创建SQL Server操作员的服务器名称。我已经在Nisarg-PC/SQL01中创建了一个名为DBASupport的操作员。
  3. 认证方法。指定认证方法。在我们的演示中,我使用了windows认证

点击 "确定",关闭对话框。

Connection property to populate operator

在通知信息主题文本框中指定电子邮件主题。在我们的演示中,主题行是 主数据库存储过程的迁移状态。

在通知信息正文中指定电子邮件正文。在我们的演示中,邮件正文如下。

Hello DBASupport,

The stored procedure of the master database has been transferred successfully.


最后,通知操作员任务看起来像下面的图片。

Notify Operator task

这封邮件必须在所有工作都迁移成功后发送。要做到这一点,我们必须使用连接器连接这两个任务。这个包看起来如下图所示。

Final SSIS package created in SSDT 2017

Transfer Master Stored Procedures任务已经配置成功。

总结

在本系列的第二篇文章中,我们了解了转移主存储过程任务。我已经解释了我们如何配置它,以便使用SQL Server数据工具(SSDT 2017)在SQL Server的两个实例之间传输在主数据库中创建的用户存储过程。