使用SSDT 2017在SQL Server实例之间传输SQL作业

124 阅读6分钟

在这一系列的文章中,我们将学习如何使用SSDT 2017克隆SQL服务器实例。在我之前的文章中,我们学习了如何在Windows 10上安装和配置SSDT 2017。在这一系列文章中,我们将使用SSDT 2017中提供的SSIS工具将以下SQL Server组件迁移到另一台服务器。

  1. SQL服务器工作
  2. 主数据库的存储过程
  3. 转移日志
  4. 转移错误信息

这篇文章涵盖了将SQL Jobs转移到另一个实例的过程。

环境设置

为了演示,我在工作站上安装了SQL Server 2019。我已经在SQL Server上创建了两个实例。我已经恢复了以下数据库。

  1. Wideworld Importers数据库
  2. Wideworld DW数据库
  3. Stackoverflow 2010数据库

源实例是Nisarg-PC\SQL01,目标实例是Nisarg-PC\SQL02。在Nisarg-PC\SQL01(源实例)上创建了以下作业。

  1. Diff Backup_User_Database
  2. 用户数据库完全备份
  3. 日志备份_User_Database
  4. 重建索引_用户数据库
  5. 更新统计_用户数据库

你可以通过执行下面的查询来查看带有时间表的作业列表。

选择

@@SERVERNAME 主机名

jobs.name job_name

,jobs.enabled job_enabled

,syssch.name schedule_name

,syssch.schedule_id

,syssch.enabled schedule_enabled

from msdb.dbo.sysjobs jobs

inner join msdb.dbo.sysjobschedules schedule on jobs.job_id = schedule.job_id

inner join msdb.dbo.sysschedules syssch on schedule.schedule_id = syssch.schedule_id

order by jobs.enabled desc

Table Description automatically generated

配置转移工作任务

让我们配置转移工作任务,以便在实例之间复制SQL工作。要做到这一点,启动SQL Server数据工具🡪创建新的SSIS项目,命名为转移维护作业。

Create new project in SSDT 2017

在包设计器中,拖动SQL转移作业,把它放在包设计器表面的控制流窗口中,把它重命名为转移维护作业,然后双击配置它。

Drag and drop Transfer jobs task in SSDT 2017

一个名为转移工作任务编辑器的对话框打开。点击对话框中的 "工作 "选项。

Transfer Jobs Task Editor

现在,为了连接源和目的地,我们必须创建新的SQL Server连接。要做到这一点,点击SourceConnection。选择新的连接。

Configure SourceConnection

SMO连接管理器编辑器的对话框中,指定以下参数。

  1. 服务器名称。提供源服务器的主机名。在我们的例子中,源是Nisarg-PC\SQL01
  2. 认证方法。提供一个用于连接到SQL服务器的认证方法。我们将使用Windows认证,所以选择 "使用Windows认证"选项

<img src="www.sqlshack.com/wp-content/…" 76949"="" alt="指定服务器名称" data-old-src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAABAAICTAEAOw==" data-src="/wp-content/uploads/2021/11/specify-servername.png" >

同样,配置目的地编辑器。SMO连接管理器编辑器中的配置参数将如下:

  1. 服务器名称。提供源服务器的主机名。在我们的例子中,源是Nisarg-PC\SQL02
  2. 认证方法。提供一个用于连接到SQL服务器的认证方法。我们将使用windows认证,所以选择"使用Windows认证"选项

连接选项看起来像以下图片:

指定来源和目的地

在 "工作 "部分,我们可以设置以下选项

  1. TransferAllJobs:该选项用于指定你是想转移所有工作还是选定工作。如果你想转移所有工作,那么选择True。如果您想转移选定的工作,则选择False
  2. JobList: 当您想转移选定的工作时,该选项被使用。它显示了一个子菜单,其中有在服务器上创建的所有SQL作业。您可以从子菜单中选择一个或多个工作

在我们的案例中,我们要转移所有工作,所以在 TransferAllJobs 选项中选择 True。

<img src="www.sqlshack.com/wp-content/…" 76951"="" alt="指定工作" data-old-src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAABAAICTAEAOw==" data-src="/wp-content/uploads/2021/11/specify-jobs.png" >

在选项部分,我们可以设置以下选项。

  1. IfObjectExists:你可以指定转移工作任务编辑器所要执行的操作。你可以设置以下任何一个选项
    1. FailTask。如果目标实例上存在一个作业,该作业将失败。
    2. 覆盖。如果目的地存在作业,该任务将覆盖现有作业的设置。
    3. 跳过:如果作业存在,该任务将跳过该特定SQL作业的传输。
  2. EnableJobsAtDestination:一旦所有工作被复制,如果你想启用已转移的工作,请选择 "True",如果你想保持它们的禁用状态,则选择 "False"。

在我们的例子中,我们想覆盖现有的作业,所以选择覆盖,而在转移作业后,我们想启用它们,所以EnableJobsAtDestination的值是True。

Specify Objects

转移作业任务看起来像下面的图片。

Transfer Jobs Task editor

现在,当所有作业被转移时,我们应该得到通知。要做到这一点,我们必须配置通知操作员任务。让我们了解如何配置它。

配置通知操作员任务

首先,从SSIS工具箱中拖出通知操作员任务,把它放到控制流表面,把它重命名为发送电子邮件,然后双击它进行配置。

SSIS package designer in SSDT 2017

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

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

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

Notify Operator Task

在通知信息主题文本框中指定电子邮件的主题。在我们的演示中,主题行是 SQL作业迁移的状态。

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

*你好,DBASupport.,
SQL作业已经成功转移。
*

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

Configure Notify Operator task

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

Transfer Maintenance Jobs task in SSDT 2017

转移作业任务已经配置成功了。

总结

在本系列的第一篇文章中,我们了解了转移作业任务。我已经解释了我们如何配置它来使用SQL Server数据工具在两个SQL Server实例之间转移作业。(SSDT 2017)在下一篇文章中,我们将学习转移登录任务,并在SSDT 2017中创建一个包,在SQL Server的两个实例之间迁移登录。

目录

Nisarg Upadhyay

Nisarg Upadhyay是一名SQL Server数据库管理员和微软认证的专业人士,拥有超过8年的SQL Server管理经验和2年的Oracle 10g数据库管理经验。

他在数据库设计、性能调整、备份和恢复、HA和DR设置、数据库迁移和升级方面有专业的知识。他已经完成了Ganpat大学的技术学士学位。您可以通过nisargupadhyay87@outlook.com与他联系。

Nisarg Upadhyay