如何有效地记录SQL Server代理作业

问题描述:

我的团队几乎全是新的,我们继承了几个自动化作业,我们几乎没有文档(工作描述中没有任何文档)。我们有数百个在SQL Server代理和各种服务器上运行的自动化作业,因此我想开始记录一些基本信息(这些作业是什么时间安排的?他们通常需要多长时间?他们多久失败一次?是执行时间长度是静态还是增长?如果它是一个SSIS包,它位于哪里以及它做了什么?如果它是一个报告,它是否可以迁移到SSRS调度程序?)。如何有效地记录SQL Server代理作业

我们在该地区的一所大学曾问我们是否可以利用任何实习生。尽管我们有很多工作,但我们无法授予非员工敏感数据的访问权限。我正在考虑将数据库恢复到另一台服务器,并截断敏感数据表,使系统数据库保持完整,以记录计划任务。我不确定这是否是一个好主意,因为我可能会花费尽可能多的时间来“保证”数据,因为实际任务需要完成。有没有人有这种类型的问题的任何创造性的解决方案?

也许是这样的:

http://bradsruminations.blogspot.com/2011/04/documenting-your-sql-agent-jobs.html http://www.elsasoft.org/forum/topic.asp?TOPIC_ID=164

我想听到任何反馈,其他人谁已经克服了这些类型的挑战。我感谢您的帮助!!!

我从来没有使用过这个工具,但我听说过一些关于Dataedo的好东西。 https://dataedo.com/

所有这些信息都存储在MSSQL的表中,您可以通过查询这些系统表来检索信息。以下适用于SQL 2012以后,您可以使用下面的列表查询作业,计划等现在MSDN是在这里成为你的朋友。

  • dbo.sysalerts:每个警报都包含一行。
  • dbo.syscategories:包含SQL Server使用的类别 Management Studio用于组织作业,警报和操作员。
  • dbo.sysdownloadlist:包含所有 目标服务器的下载指令队列。
  • dbo.sysjobactivity:包含有关当前的SQL Server 代理作业活动和状态信息。
  • dbo.sysjobhistory:包含有关SQL Server代理执行 计划作业的信息。
  • dbo.sysjobs:将每个计划作业的信息存储为由SQL Server代理执行的 。
  • dbo.sysjobschedules:包含调度信息的职位是由SQL Server代理
  • dbo.sysjobservers执行 :存储关联或与一个或多个目标服务器中 特定工作的关系。
  • dbo.sysjobsteps:包含SQL Server代理执行的作业中每个步骤的信息为 。
  • dbo.sysjobstepslogs:包含有关作业步骤日志的信息。
  • dbo.sysnotifications:为每个通知包含一行。
  • dbo.sysoperators:为每个SQL Server代理运算符包含一行。
  • dbo.sysproxies:包含有关SQL Server代理代理 帐户的信息。
  • dbo.sysproxylogin: SQL Server登录与每个SQL Server代理帐户的 相关联的记录。
  • dbo.sysproxysubsystem:记录每个代理帐户使用的SQL Server代理子系统是 。
  • dbo.sysschedules:包含有关SQL Server代理作业 计划的信息。
  • dbo.syssessions:包含每个SQL的SQL Server代理程序开始日期 服务器代理程序会话。每次SQL Server代理服务启动时都会创建一个会话。
  • dbo.syssubsystems:包含有关所有可用SQL Server的信息 代理代理子系统。
  • dbo.systargetservergroup成员:目标服务器的记录是 目前已列入此多服务器组中。
  • dbo.systargetservergroups:目标服务器组的记录是 目前已在此多服务器环境中登记。
  • dbo.systargetservers:目标服务器的记录当前为 已列入此多服务器操作域。
  • dbo.systaskids:包含在之前的 版本中创建的任务到当前的 版本中的Management Studio作业的映射。

BIG CAVEAT:这不会告诉你,如果该作业运行SQL脚本,那么该作业会发生什么。您需要查看脚本中的作业,然后添加说明。这就是为什么你第一次勤奋和注意细节。