经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SQL Server作业报“Unable to determine if the owner (xxx\xxx) of job xxx has server access”
来源:cnblogs  作者:潇湘隐者  时间:2021/6/28 9:28:52  对本文有异议

案例描述:

 

今天遇到一个很有意思的SQL Server作业报错告警,作业出错的详细信息如下:

  1. Date        2021/6/23 12:34:00
  1. Log        Job History (YourSQLDba_BlockingSQL_Alert)
  1.  
  1. Step ID       
  1. Server        xxxxx
  1. Job Name        YourSQLDba_BlockingSQL_Alert
  1. Step Name       
  1. Duration        00:00:06
  1. Sql Severity    0
  1. Sql Message ID    0
  1. Operator Emailed   
  1. Operator Net sent   
  1. Operator Paged   
  1. Retries Attempted    0
  1.  
  1. Message
  1. The job failed.  Unable to determine if the owner (xxx\xx) of job YourSQLDba_BlockingSQL_Alert has server access (reason: Could not obtain information about Windows NT group/user 'xxx\xxxx', error code 0x251e. [SQLSTATE 42000] (Error 15404)).

 

案例分析:

 

       关于错误代码0x251E, 这个代表Bad DNS packet.(DNS_ERROR_BAD_PACKET)

 

 

其实这个案例是这样的:因为一个DC服务器宕机了,SQL Server作业(Job)的Owner是一个域账号(NT账号),在作业运行时会验证权限,由于DC服务器挂了,无法访问DC获取相关信息、验证权限时报错。如果这里的作业Owner为sa的话,就不会遇到这个错误。所以我一直推荐将作业的Owner设置sa,避免这样的麻烦。那么这台SQL Server数据库成了一个特例,因为我一直用域账号(NT账号)管理数据库,sa账号默认是禁用的。所以有时候创建作业的时候不可避免忘记了修改作业的Owner。

 

其实不光DC服务器宕机,当域账号被锁时也会有这样的错误。之前我在博客Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5里面就介绍过这样的案例,如果作业的Owner是一个域账号的话,如果域账号被锁的话,那么作业也会报错。域账号被锁时,对应的错误代码为0x5,表示访问拒绝(ERROR_ACCESS_DENIED)。

 

 

解决方法比较简单,修改作业的owner为sa即可。可以使用下面脚本批量生成操作脚本。当然问题的根源还是域服务器DC宕机了。

 

  1. --==================================================================================================================
  1. --      ScriptName          :           change_jobs_owner.sql
  1. --      Author              :           潇湘隐者   
  1. --      CreateDate          :           2015-12-18
  1. --      Description         :           将数据库作业的OWNER改为sa或某个账号
  1. --      Note                :           Azure SQL不支持.
  1. /******************************************************************************************************************
  1.         Parameters          :                                   参数说明
  1. ********************************************************************************************************************
  1.             @login_name     :           作业的Owner,例如sa
  1. ********************************************************************************************************************
  1.    Modified Date    Modified User     Version                Modified Reason
  1. ********************************************************************************************************************
  1.     2015-12-18           Kerry       V01.00.00          新建该脚本。
  1. *******************************************************************************************************************/
  1. --==================================================================================================================
  1.  
  1. DECLARE  @login_name   NVARCHAR(32);
  1.  
  1. SET @login_name='sa';
  1.  
  1. SELECT  'EXEC msdb.dbo.sp_update_job @job_name=N''' +j.name + ''', @owner_login_name=N''' + RTRIM(LTRIM(@login_name)) + ''';' AS CommadText
  1. FROM msdb.dbo.sysjobs j
  1. INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
  1. INNER JOIN sys.syslogins l ON l.sid = j.owner_sid
  1. WHERE l.name !='sa'
  1. ORDER BY j.name;

原文链接:http://www.cnblogs.com/kerrycode/p/14923410.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号