远程多台前置机连接服务器上配置作业,得到作业运行历史记录

前置机中遇到的问题:

1.多个前置机,都需要每个连接上才能配置。

2.前置机的链接服务器需要配置。

3.前置机的作业运行情况需要查看。

4.统一配置全部的前置机上的连接服务器或者作业,存储过程和SQL.

5.单独前置机配置。

需要数据:

前置机IP。用户名,密码。 

前置机通信状态测试。

前置机的作业运行状态和最近一条历史记录和全部历史记录。 

前置机的SQL语句执行能力面板。

查看作业历史记录模板,建立作业模板。建立链接服务器模板。

得到脚本的函数,生成当前脚本的方法。

表最近一条记录的显示。

目的。避免进入每一个前置机去查看具体操作。

当然:目前可以采用简单的方法:

Select * from [前置机IP].msdb.dbo.sysjobs

查看作业

Select * from [前置机IP].msdb.dbo.sysjobs

查看一个作业的历史记录

Select  * from msdb.dbo.sysjobhistory where job_id=----

A. 显示所有链接服务器的所有登录映射

下面的示例显示在运行 SQL Server 的本地计算机上定义的所有链接服务器的所有登录映射。

EXEC sp_helplinkedsrvlogin

master 记录 系统中所有的系统信息,包括登入账户、系统配置和设置、服务器中数据库的名称等
msdb 主要保存些 作业、调度警报

如果你的数据库里面使用了作业,那么做数据库迁移或者换服务器的时候记得备份并还原msdb ,madb的还原要用单用户模式。

连接服务器

select * from master.dbo.sysservers

Isremote 字段=0 是远程

Select top 1 t.server, k.name,t.message,t.run_status,t.run_date,t.run_time from msdb.dbo.sysjobhistory as t

inner join (Select top 1 job_id,name,enabled,start_step_id from msdb.dbo.sysjobs where name='作业名') as k

 on  t.job_id=k.job_id where t.step_id=order by t.instance_id desc

Select top 1 t.server, k.name,t.message,t.run_status,t.run_date,t.run_time from 【IP】msdb.dbo.sysjobhistory as t

inner join (Select top 1 job_id,name,enabled,start_step_id from 【IP】msdb.dbo.sysjobs where name='作业名') as k

 on  t.job_id=k.job_id where t.step_id=order by t.instance_id desc

可以用游标循环进行操作 读取每一条前置机数据。

还可以进一步弄个临时表。 插入到临时表中。

 

对应字段弄一弄。 然后insert into @tbCurrent SELECT即可

USE [wan]

GO

/****** Object:  StoredProcedure [dbo].[GetFpcJobState]    Script Date: 07/05/2013 16:57:35 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[GetFpcJobState]

 @JobName varchar(150)=null

as 

DECLARE @Sql  nvarchar(Max)

DECLARE @rmtname nvarchar(30)

set @Sql =N''

declare @mytabtemp table

(

     

        FCPIP nvarchar(Max),

        serverStr nvarchar(Max),

        JobName nvarchar(Max),

        Resultmessage nvarchar(Max),

        run_status nvarchar(Max),

        run_date nvarchar(Max),

        run_time nvarchar(Max))

DECLARE curStation CURSOR FOR 

SELECT FpcIP From FPC

OPEN curStation

FETCH NEXT FROM curStation INTO @rmtname

WHILE @@FETCH_STATUS = 0

BEGIN

SET @rmtname = LTRIM(RTRIM(@rmtname))

set @sql  = ' Select  top 1  '''+@rmtname+''' , t.server, k.name,t.message,t.run_status,t.run_date,t.run_time from ['+@rmtname+'].msdb.dbo.sysjobhistory as t

inner join (Select top 1 job_id,name,enabled,start_step_id from ['+@rmtname+'].msdb.dbo.sysjobs where name='''+@JobName+''') as k

 on  t.job_id=k.job_id where t.step_id=0 order by t.instance_id desc'

insert into @mytabtemp exec sp_executesql @sql

FETCH NEXT FROM curStation INTO @rmtname

END

CLOSE curStation

DEALLOCATE curStation

SELECT * FROM  @mytabtemp output

SET NOCOUNT ON

GO



通过上述方法: 我在 中心服务器建立针对每个前置机的连接服务器,然后通过执行此存储过程,放入作业名。  即可得到 对应前置机的 执行作业名的运行状态和执行时间等。



本人声明:沐海(http://my.oschina.net/mahaisong) 以上文章是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言!欢迎

转载于:https://my.oschina.net/mahaisong/blog/142762

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值