您的位置:首页 > 数据库

SQL Server job 的迁移及扩展知识

2010-01-14 15:47 891 查看
今天公司数据库服务器down了,要启动备机,所以用了每天的备份文件还原到备机,生产数据库恢复过程一切都比较顺利的完成,应用很快得到恢复,正常运作。但还有些后续工作,需要我这个DBA来完成,比如DTS的重建,job重新布置。
由于job比较多,多亏平时考虑比较周全,每个月把系统数据库(master,msdb,model )这3个库备份了,现在主要就要用到msdb,把msdb还原,由于msdb是控制管理job的所以,通常会有系统账户在登陆使用它,我的做法是开两个企业管理器,一个做好恢复准备,一个用来结束进程,虽然有些笨,不过挺简单,好用。
还原后,在企业管理器-管理-作业下看到所有的job回来了,呵呵,貌似成功。但修改作业会提示错误,这主要是因为恢复msdb库到备机,主

机名不同导致的。
这时需要做以下几步:
1、查找服务器名称
select serverproperty('servername')
或者
select @@servername
2、查看sysjobs表中的originating_server,这个字段代表‘作业来自的服务器名称’。
select * from sysjobs
发现originating_server<>serverproperty('servername'),这就是导致不能修改的原因
3、修改originating_server
update sysjobs set originating_server =cast(serverproperty('servername')as varchar(50))
4、再次修改,ok可以保存。

 

下面是个网友写的,个人觉得也蛮好的,大体思想不变,更灵活

--获取当前SQL Server的实例名
DECLARE @servername sysname
SET @servername=CAST(SERVERPROPERTY('servername') as nvarchar(128))
--检查是否存在作业的源服务器与当前实例名不同名的作业,如果存在,则更新
IF EXISTS(SELECT * FROM sysjobs WHERE originating_server<>@servername) BEGIN
--因为要修改系统表,所以设置允许更新系统表
EXEC sp_configure 'allow updates',1
RECONFIGURE WITH OVERRIDE
--将作业的来源服务器设置为当前实例
UPDATE sysjobs SET originating_server=@servername WHERE originating_server<>@servername
--关闭系统表更新功能
EXEC sp_configure 'allow updates',0
RECONFIGURE WITH OVERRIDE
END


sp_configure
显示或更改当前服务器的全局配置设置。

 

RECONFIGURE

指定如果配置设置不需要服务器停止并重新启动,则更新当前运行的值。RECONFIGURE 还检查无效值(如 syscharsets 中不存在的排序次序值)或非推荐值(如将 allow updates 设置为 1)的新配置值。对于那些不需要服务器停止并重新启动的配置选项,其当前运行的值和当前配置的值在指定 RECONFIGURE 后应相同。
WITH OVERRIDE

allow updatesrecovery interval time slice 高级配置选项禁用配置值检查(检查无效值或非推荐值)。另外,RECONFIGURE WITH OVERRIDE 使用指定值强制重新配置。例如,min server memory 配置选项可使用大于 max server memory 配置选项中所指定的值来配置。然而,这被认为是致命错误。因此,指定 RECONFIGURE WITH OVERRIDE 将不禁用配置值检查。任何配置选项都可以通过 WITH OVERRIDE 选项重新配置。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息