在迁移或升级SQL Server数据库服务器时,很多场景下我们不能还原msdb,所以我们必须手工迁移SQL Server相关作业。如果手工生成每一个作业的脚本话,费时又费力,其实SQL Server中有好几种方法可以批量生成作业脚本的方法, 下面介绍一下。
1:SSMS客户端工具批量生成创建作业脚本
1:在SSMS—>SQL Server Agent下,单击Jobs。
2: 按快捷键F7,在Object Explorer Details里面,你会看到所有的作业
3: 全选所有作业(CTRL+A),然后右键单击“Script Job as”,然后选项“CREATE TO"就会生成所有作业的脚本。
这个方法其实是非常简洁方便的。不足之处就是所有作业的脚本位于同一个Script,没有按作业名生成相关对应的脚本。
2:使用PowerShell脚本生成所有作业的脚本
有一个现成的PowerShell脚本,相关介绍以及脚本下载具体参考下面链接:
https://gallery.technet.microsoft.com/scriptcenter/How-to-get-the-of-all-the-81859696
PS C:\Users> M:\GetJobScripts\GetAllAgentJobs.ps1
cmdlet GetAllAgentJobs.ps1 at command pipeline position 1
Supply values for the following parameters:
ServerName: YourServerName
FilePath: M:\GetJobScripts
Scripting out xxxxxxxxxxxx successfully!
.........................................
使用该PowerShell脚本可以生成各个作业的各自脚本。非常简洁方便。不过该脚本要求Windows PowerShell 2.0或更高的版本,另外,有些平台是没有测试过的,需要参考上面链接说明。 GetAllAgentJobs.ps1的脚本如下:
方法3:通过SqlDmo组件相关函数生成数据库对象脚本,不过有些版本由于没有安装"Backward Compatibility Components" 导致该脚本不能创建相关脚本文件,个人测试时也遇到不少问题,有兴趣可以试试。
http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm
参考资料:
https://stackoverflow.com/questions/3361163/automatically-create-scripts-for-all-sql-server-jobs
<a href="http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm">http://www.databasejournal.com/features/mssql/article.php/2205291/Generate-Scripts-for-SQL-Server-Objects.htm</a>