SQL SERVER作业诊断

来源:互联网 发布:白菜价是淘宝开的吗 编辑:程序博客网 时间:2024/05/16 15:12

原文链接:http://www.databasejournal.com/features/mssql/article.php/3285691/Troubleshooting-SQL-Server-Jobs.htm


如果你碰到了SQL SERVER作业相关问题,可以参照此诊断清单来寻找可能的解决方案。

1.确保你使用了最新的SQL SERVER服务包.

因为很多bug都是被SQL SERVER服务包给修复的,你应该安装最新的SQL SERVER服务包。检查你使用的是什么SQL SERVER服务包,参照链接:How can I check what SQL service pack am I running?

2. 确保计划任务服务是在运行的.

如果你希望作业按需运行,这个服务是必须启动的。启动Windows NT上的计划任务服务:选择:开始——>控制面板——>管理工具——>服务——>双击 Task Scheduler 启动类型——>自动或手动——>应用。

3. 如果所有的作业都不能启动,检查SQL SERVER代理和EventLog服务是否在运行。

如果你想要作业执行,这些服务必须启动。所以,如果这些服务没有运行,你需要将其启用。

SQL SERVER代理服务:SQL Server (MSSQLSERVER),EventLog服务:Windows Event Log。

4. 确保SQL SERVER代理服务是在域用户组中的某个用户下运行

本地系统账户没有网络访问权限,所以如果你的作业需要从网络获取资源,或者你想通过邮件或是寻呼通知操作员,你必须设置让SQL SERVER代理服务是在域用户组中的某个用户下运行。

5. 如果此作业不执行,确保那个作业是启用的

作业可以是启用的或是未启用的。确保作业是启用的,参考如下做法:

打开SQL Server Enterprise Manager,打开对象资源管理器
  1. 点开某一服务器实例;
  2. 点击SQL SERVER代理,展开作业;
  3. 双击打开某个作业看其是否启用。

6. 如果手动启动后作业运行很好,但是没有在计划的基础上执行,检查作业计划是否启用。

作业计划可以是启用的或是未启用的,检查作业计划是否启用,参考如下做法:

  1. 打开SQL Server Enterprise Manager;
  2. 点开某一服务器实例;
  3. 点击SQL SERVER代理,展开作业;
  4. 双击打开某个作业选择计划页;
  5. 双击某一计划,看是否启用。

7. 检查作业执行历史记录来确保最后一次作业是成功执行的。

查看作业历史记录, 参考如下做法:

  1.   运行SQL Server Enterprise Manager;
  2. 打开对象资源管理器,打开SQL SERVER代理;
  3. 右键某一作业,点击查看历史记录。

8.检查SQL SERVER错误日志,SQL SERVER Agent错误日志和windows应用程序日志来得到更多的详细错误描述。

对比SQL SERVER错误日志/SQL SERVER Agent错误日志/windows应用程序日志和程序报错的日期和时间,可以帮你确定失败原因。

9. 如果作业成功执行,但是责任人(通知人)没有收到通知,试试手动执行操作:电子邮件、寻呼、Not send。

大多数情况下,这种问题出现是因为你输入了一个错误的'e-mail', 'pager', 或 'net send' 地址。如果你可以手动发送这些给操作员,检查SQL SERVER Agent账户并检查操作员所在计划。

10. 如果作业被windows经过身份验证的用户拥有,你会得到8198报错。

这是Windows NT 4.0的bug,要解决这个问题,需要改变作业的owner是一个SQL SERVER标准用户或是系统管理员或者将系统升级到Windows 2000.

11. 如果你在数据库维护计划中的某个作业中新增步骤,你会在客户端收到报错。

这是一个SQL Server 7.0的bug,SQL SERVER 2000不再有这样的问题,对于这种问题,不要修改用维护计划向导去创建的作业。

12. 如果第一个插入的批处理作业遭遇3604报错。

如果第一插入的批处理作业在某个具有IGNORE_DUP_KEY的唯一索引的表上会违反索引的唯一属性,作业就会失败报3604错误,这是SQL Server 2000的bug,此bug在SQL Server 2000service pack 1中修复。

13. 多个作业被同一个用户所属并且在同一时间启用,会失败并报主键错误

这是SQL Server 2000的bug,在SQL Server 2000service pack 1中修复。

14. T-SQL作业含有SET NOCOUNT ON,并且设置将结果输出到文件会导致一直向输出文件中输入行数

解决这一问题,你需要将步骤操作类型改成操作系统并且用Osql.exe功能将结果输出到文件中。

0 0