SQL Server作业报错特殊案例分析

发现问题

一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了。一时不清楚什么原因导致作业出错。

Message
Executed as user: NT SERVICE\SQLSERVERAGENT. ...eration. [SQLSTATE 01003] (Message 8153)  Mar  6 2019  8:09AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:10AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:17AM [SQLSTATE 01000] (Message 0)  Mar  6 2019 11:17AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  1:03PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  4:06PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  4:07PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  1:40PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  1:36PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:02AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:06AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  9:47AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  5:38PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  5:34PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:16PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:07AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:09AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  2:18PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  1:24PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:11AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:12AM [SQLSTATE 01000] (Message 0)  Mar  6 2019 11:34AM [SQLSTATE 01000] (Message 0)  Mar  7 2019 11:39AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  4:20PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:51AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:44AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  7:31AM [SQLSTATE 01000] (Message 0)  Mar  6 2019 10:46AM [SQLSTATE 01000] (Message 0)  Mar  6 2019 10:10AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:08AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:04AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  3:19PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  9:02AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  9:01AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  9:48AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:01AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  4:16PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  2:17PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:31AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:04AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:08AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  1:08PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  1:04PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  2:03PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:18PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:16AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  2:14PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  4:13PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  4:10PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  9:02AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  2:01PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  7:44AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  5:38PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  5:34PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  5:38PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  5:34PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  2:03PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:05PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  7:01PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:05AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:47PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  9:16AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  2:18PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  2:18PM [SQLSTATE 01000] (Message 0)  Mar  7 2019  2:36PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  9:20AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:32AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:13AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  1:31PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  8:06AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:07AM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:16PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  3:16PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  9:03AM [SQLSTATE 01000] (Message 0)  Mar  6 2019 11:59AM [SQLSTATE 01000] (Message 0)  Mar  7 2019 12:01PM [SQLSTATE 01000] (Message 0)  Mar  6 2019  2:59PM [SQLSTATE 01000] (Message 0)  Mar  6 2019 11:49AM [SQLSTATE 01000] ...  The step failed.

如上截图所示,从这里可以看到出错信息的Sql Severity级别为13, 通过数据库引擎错误严重性(Database Engine Error Severities),我们可以知道13意味着Indicates transaction deadlock errors. 也就是说出现死锁,导致作业的会话成为了死锁的牺牲品。不过也很奇怪,以前也遇到过作业由于出现死锁,导致作业失败的情况。都会在Message里面有提示,但是这个实例的版本SQL Server 2012 SP3(11.0.6020.0),出现死锁,居然没有提示相关死锁信息。不清楚是Bug还是其它原因。

严重性级别

下表列出并说明 SQL Server 数据库引擎所引起错误的严重级别。


严重级别


描述


0-9


返回不太严重的状态信息或报表错误的信息性消息。 数据库引擎 不会引起严重级别为 0 到 9 的系统错误。


10


返回不太严重的状态信息或报表错误的信息性消息。 由于兼容性原因, 数据库引擎 在将错误信息返回到调用应用程序前将严重性级别从 10 转换为 0。


11-16


指示可由用户纠正的错误。


11


指示给定的对象或实体不存在。


12


特殊严重性,用于因特殊查询提示而不使用锁定的查询。 在某些情况下,因为没有用锁保证一致性,由这些语句所执行的读取操作会产生不一致的数据。


13


指示事务死锁错误。


14


指示安全性相关错误,如权限被拒绝。


15


指示 Transact-SQL?命令中的语法错误。


16


指示可由用户纠正的常规错误。


17-19


指示无法由用户纠正的软件错误。 请将问题通知系统管理员。


17


指示语句导致 SQL Server?用尽资源(如数据库的内存、锁或磁盘空间)或超出了系统管理员设置的某些限制。


18


指示 数据库引擎 软件中有问题,但可完成执行语句,并且可维护到 数据库引擎 实例的连接。 每当出现严重级别为 18 的消息时均应通知系统管理员。


19


指示超出了不可配置的 数据库引擎 限制并且当前批处理已终止。 严重级别为 19 或更高的错误消息将停止执行当前的批处理。 严重级别为 19 的错误很少,必须由系统管理员或主要支持提供商更正。 当引发严重级别为 19 的消息时,请与系统管理员联系。 严重级别从 19 到 25 的错误消息均写入错误日志。


20-24


指示系统问题并且是致命错误,这意味着正在执行某语句或批处理的 数据库引擎 任务已停止运行。 此任务记录了所发生事件的有关信息,然后终止。 在大多数情况下,应用程序与 数据库引擎 实例的连接也可能终止。 如果发生这种情况,该问题可能使应用程序无法重新连接。

此范围内的错误消息可以影响同一数据库中所有正在访问数据的进程,并可能指示数据库或对象已损坏。 严重级别从 19 到 24 的错误消息均写入错误日志。


20


指示语句遇到了问题。 由于该问题只影响了当前任务,数据库本身未必已经损坏。


21


指示遇到了影响当前数据库中所有任务的问题,但数据库本身未必已经损坏。


22


指示消息中所指定的表或索引因软件或硬件问题而损坏。

很少发生严重级别为 22 的错误。 如果发生这种错误,请运行 DBCC CHECKDB 以确定数据库中的其他对象是否也已损坏。 这种问题可能只是出现在缓存中而不存在于磁盘本身。 如果发生此错误,请重新启动 数据库引擎 实例更正此问题。 若要继续工作,则必须重新连接到 数据库引擎实例;否则,请使用 DBCC 修复该问题。 在某些情况下,可能需要还原数据库。

如果重新启动 数据库引擎 的实例不能解决此问题,那么问题就是出在磁盘上。 有时,销毁错误消息中指定的对象可以解决此问题。例如,如果消息报告 数据库引擎 的实例在非聚集索引中发现了长度为 0 的行,则请删除该索引并重建。


23


指示整个数据库的完整性因硬件或软件问题而出现问题。

很少发生严重级别为 23 的错误。 如果发生这种错误,请运行 DBCC CHECKDB 以确定损坏的程度。 这种问题可能只是出现在缓存中而未出现在磁盘本身。 如果发生此错误,请重新启动 数据库引擎 实例更正此问题。 若要继续工作,则必须重新连接到 数据库引擎实例;否则,请使用 DBCC 修复该问题。 在某些情况下,可能需要还原数据库。


24


指示介质故障。 系统管理员可能需要还原数据库。 您可能还需要致电硬件供应商

参考资料:

https://docs.microsoft.com/zh-cn/sql/relational-databases/errors-events/database-engine-error-severities?view=sql-server-2017

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • sql server定时作业调用Kettle job出错的快速解决方法

    错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\plugins' Unable to get VFS File object for filename 'C:\Windows\system32\config\systemprofile\.kettle\plugins' : Could not find file with URI "C:\Window

  • SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server Agent) 二.新建作业 三.设置作业常规属性 四.设置作业步骤 五.设置作业计划 六.点击"确定" 完成作业设置 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们.

  • SQL Server 作业同步 (结合备份作业)

    核心导出作业的 代码 和 作业备份是相似的 复制代码 代码如下: alter PROC DumpJob (@job VARCHAR(100)) AS DECLARE @retrun NVARCHAR(max) DECLARE @jobname VARCHAR(30),@category_calss_i INT ,@category_calss VARCHAR(50),@category_name VARCHAR(50) ,@category_type VARCHAR(30),@category_

  • SQL Server 作业的备份(备份作业非备份数据库)

    作业备份,不是备份数据库,是备份作业. 我的方法是把作业导出成文件备份起来,因为当你服务器维护的多了的时候很多你的作业 就很成问题,很麻烦. 最好能够作业实现同步,这个也是第一步,保存成文件,之后个人设想使用powershell 来把作业同步起来 复制代码 代码如下: DECLARE @jobname VARCHAR(30),@category_calss_i INT ,@category_calss VARCHAR(50),@category_name VARCHAR(50) ,@catego

  • SQL Server 2005作业设置定时任务

    公司有一个老项目由于直接把终端拍摄的图片以二进制的形式保存到数据库中,数据库比较大所以需要经常删除这些冗余数据,手动删除费时费力,项目组长让我把这些操作变成自动的,每天执行一次,只保留最近两个月的图片数据.查阅了相关的资料,找到了解决方案,在此做一个记录,以便有同样需求的人和自己查阅. 现在我们通过一个非常简单的示例来演示如何设置定时任务:有一张员工表,我们定时往里面添加一条数据.通过示例来了解如何使用SQL Server 2005的作业任务进行定时删除数据的操作: 表结构: 1.开启SQL S

  • SQL Server Alwayson创建代理作业的注意事项详解

    前言 Always On 可用性组活动辅助功能包括支持在辅助副本上执行备份操作. 备份操作可能会给 I/O 和 CPU 带来很大的压力(使用备份压缩). 将备份负荷转移到已同步或正在同步的辅助副本后,您可以使用承载第一层工作负荷的主副本的服务器实例上的资源,您可以创建主数据库的任何类型的备份. 也可以创建辅助数据库的日志备份和仅复制完整备份.下面话不多说了,来一起看看详细的介绍吧. 一.概念 1.辅助副本上支持的备份类型 BACKUP DATABASE :在辅助副仅支持数据库.文件或文件组的仅复

  • sql server代理中作业执行SSIS包失败的解决办法

    RT,执行失败了,总是只提示一句"以xxxx用户身份执行失败",很难找原因. 引用 http://bbs.csdn.net/topics/300059148 Sql2005如何用dtexec运行ssis(DTS)包 一.首先在Business Intelligence中设计好包,并调试通过. 二.选用dtexec工具运行包 (一)  打开 xp_cmdshell 选项 SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在

  • SQL SERVER数据库的作业的脚本及存储过程

    IF EXISTS (SELECT name FROM sysobjects WHERE name = N'cg_DoBackupJob' AND type = 'P') DROP PROCEDURE cg_DoBackupJob GO CREATE PROCEDURE [cg_DoBackupJob] @DataBaseName varchar(100), @FileHead varchar(50), @isFullBackup bit, -- 0 差量备份 1 完整备份 @FolderPat

  • SQL Server 2012 创建定时作业(图文并茂,教你轻松快速创建)

    SQL Server2012 如何创建定时作业?有兴趣的可以来看下,图文并茂哦! 1.首先我们打开SQL Server代理,里面选择作业 2.右键作业,选择新建作业 3.填写一些相应的内容,名称和说明自填即可. ***需要注意的是 已启用这个勾要勾选上. 类别我们这里默认即可,按照你的需求可以进行更改. 4.选择步骤 ,点击新建 5.填写步骤名称和所运行的数据库 ***需要注意的是  命令行就是执行你的存储过程 直接写 exec -. 即可 点击 分析 出来这样的对画框就可以了 6.点击计划  

  • SQL Server作业报错特殊案例分析

    发现问题 一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了.一时不清楚什么原因导致作业出错. Message Executed as user: NT SERVICE\SQLSERVERAGENT. ...eration. [SQLSTATE 01003] (Message 8153)  Mar  6 2019  8:09AM [SQLSTATE 01000] (Message 0)  Mar  7 2019  8:10AM [SQLSTATE 01000] (M

  • 让Django支持Sql Server作后端数据库的方法

    好久木有在windows里面写python了..这本也不是事儿,python嘛,只要系统里面装好了,那大多数代码都是可以正常运行的..然而有时候需要调用微软那一套特定的API,什么Java啊python啊总有水土不服的时候. 今天我就将我在Mac里面写好的Django项目移到win10上.一开始图省事儿,我用的sqlite3当后端数据库,但单位要求在项目正式上线的时候用SQL Server,于是,记得django 1.9默认不支持微软那一套的我,就开始在网上搜啊搜,现是发现有人说只要装好一个名为

  • sql server实现分页的方法实例分析

    本文实例讲述了sql server实现分页的方法.分享给大家供大家参考,具体如下: declare @index int,@num int set @index = 1--当前页 set @num = 2--单页包含的行数 --分页1 select top (@num) * from ppohd where doccode not in ( select top (@num * (@index -1)) doccode from ppohd order by doccode ) order by

  • 利用SQL SERVER 2005数据库镜像实现可用性分析

    我们首先来看一下什么是数据镜像: 现在几乎所有的应用系统都是基于数据库的,那么数据库的负荷是比较大的,在一天24小时中,任何时间都有可能会有数据要保存到数据库,或是从数据库中读出数据.任意时刻都会有用户连接到我们的数据库服务器上,几十,几百甚至成千上万个用户来连接使用我们的数据库,那么不论是计划内的宕机还是计划外的故障都会造成一定的损失.给我们的用户或是企业带很大的损失,特别是随着数据时代的到来,用户对数据的使用提出了更高的要求,那么作为一个DBA,就要想怎么做才能将这个损失减少到最低,正是因为

  • PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结

    本文实例讲述了PHP5.6.8连接SQL Server 2008 R2数据库常用技巧.分享给大家供大家参考,具体如下: 用到的工具: 1.JetBrains PhpStorm (编写php代码工具) 2.SQL Server 2008 R2(数据库) 3.PHP 5.6.X (x86 源于Apache XAMPP 集成) 先了解一下PHP是多少位的及其一些相关线程是否安全的信息. 在PhpStorm新建一个PHP文件里面内容为 <?php /** * Created by PhpStorm. *

  • MyBatis MapperProvider MessageFormat拼接批量SQL语句执行报错的原因分析及解决办法

    最近在项目中有这么一段代码:下载服务器基础业务数据进行本地批量插入操作,因项目中使用mybatis进行持久化操作,故直接考虑使用mybatis的批量插入功能. 1.以下是Mapper接口的部分代码 public interface PrintMapper { @InsertProvider(type = PrintMapperProvider.class,method = "insertAllLotWithVehicleCode4H2") void insertAllLotWithVe

  • sql server利用不同语种语言显示报错错误消息的方法示例

    问题: 生产环境的操作系统和数据库可能是英文版的,而我们的母语是中文,如果英语能力差点,可能有时对英语环境下的数据库脚本报错的英文提示看不懂,如果直接拿英语错误提示通过翻译工具去翻译,也不一定就是完全翻译得100%准确. 解决方案: 通过set language指定语种语言,使sql server的报错以该语种语言的形式呈现. 脚本: /* 说明:通过set language指定语种语言,使sql server的报错以该语种语言的形式呈现 脚本来源:https://www.cnblogs.com

  • 碎片拼接技术恢复XenServer服务器SQL Server数据库数据

    目录 1.数据恢复方案一 2.数据恢复方案二 ​环境:​ Dell PowerEdge服务器: XenServer虚拟化平台: 4块希捷2T STAT硬盘用RAID卡组成的RAID10: XenServer虚拟机操作系统:Windows Server系统: 虚拟机磁盘:1个10G系统盘和1个5G数据盘,部署的Web服务器(ASP +SQL). ​故障:​ 服务器突然断电导致服务器中一台XenServer虚拟机不可用,虚拟磁盘文件丢失,服务器管理员联系北亚数据恢复中心寻求帮助. ​故障检测和分析:

  • sql server 2008 用户 NT AUTHORITY\IUSR 登录失败的解决方法

    用户 'NT AUTHORITY\IUSR' 登录失败. 其实这样的情况,要不就是用户名密码不正确,要不就是用户无法登录sql server 2008.一步一步分析. 1.首先asp连接sql server 2008数据库应该没有问题. 之前我用了多种方法,链接数据库,其实链接2000与2005.2008的无区别 需要注意的是: DataServer = "127.0.0.1" DataServer = "(local)" 都是可以使用的 ConnStr="

  • 升级SQL Server 2014的四个要点要注意

    升级并不容易,但是有一些特性值得花时间了解.下面本文将介绍一些避免升级问题的技巧. 升级一个关键业务SQL Server实例并不容易;它要求有周全的计划.计划不全会增加遇到升级问题的可能性,从而影响或延迟SQL Server 2014的升级.在规划SQLServer 2014升级时,有一些注意事项有助于避免遇到升级问题. 注意:升级SQL Server 2014的四个要点! 选择升级策略 在SQL Server升级中考虑采用内部或是并行迁移策略.我首选并行迁移策略,因为它风险较低,即便难度更大一

随机推荐