我想在 MS SQL Server (2012/2014) 之间复制一组作业类别和时间表。
select * FROM msdb.dbo.sysschedules
返回所有计划。
select * FROM msdb.dbo.syscategories
WHERE category_id IN (SELECT DISTINCT category_id FROM msdb.dbo.sysjobs)
返回我所有的工作类别。
要添加它们,我可以使用存储过程:
sp_add_category
sp_add_jobschedule
我可以用这些信息完成它,但这几乎和手动重新做一样乏味。
我怎样才能以更有效的方式做到这一点?
我每天用于服务器迁移的另一个很酷的 powershell 实用程序是由Chrissy LeMaire编写的Start-SqlServerMigration.ps1
它非常适应不同的选择。
例如。在您使用计划迁移作业的方案中,您可以使用
例如,下面的 PS 代码会将所有数据库(如果存在相同名称的数据库,因为它使用
force
参数,则覆盖)从Source sqlserver\instance移动到Destination sqlcluster。它将排除Northwind, pubs
数据库。它将迁移除 之外的所有登录nwuser, pubsuser, "corp\domain admins"
,将迁移所有 sql 代理作业,将 sp_configure 选项从源服务器导出到目标服务器。您可以使用 PowerShell 编写服务器上的所有 SQL 代理作业的脚本。
此脚本确实包含在源服务器上设置的作业计划。
从脚本输出中,您可以选择要复制的 SQL 代理作业并在另一台服务器上创建它们。
Script SQL Config可以为您做到这一点。它为每个 SQL 代理作业创建一个脚本,其中还包含创建每个作业所需的类别。