我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”

SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”

案例描述:

 

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

Date        2021/6/23 12:34:00
Log        Job History (YourSQLDba_BlockingSQL_Alert)
 
Step ID        
Server        xxxxx
Job Name        YourSQLDba_BlockingSQL_Alert
Step Name        
Duration        00:00:06
Sql Severity    0
Sql Message ID    0
Operator Emailed    
Operator Net sent    
Operator Paged    
Retries Attempted    0
 
Message
The job failed.  Unable to determine if the owner (xxxxx) of job YourSQLDba_BlockingSQL_Alert has server access (reason: Could not obtain information about Windows NT group/user "xxxxxxx", 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 "xxxxxxxx", error code 0x5里面就介绍过这样的案例,如果作业的Owner是一个域账号的话,如果域账号被锁的话,那么作业也会报错。域账号被锁时,对应的错误代码为0x5,表示访问拒绝(ERROR_ACCESS_DENIED)。

 

 

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

 

--==================================================================================================================
--      ScriptName          :           change_jobs_owner.sql
--      Author              :           潇湘隐者    
--      CreateDate          :           2015-12-18
--      Description         :           将数据库作业的OWNER改为sa或某个账号
--      Note                :           Azure SQL不支持.
--==================================================================================================================
 
DECLARE  @login_name   NVARCHAR(32);
 
SET @login_name="sa";
 
SELECT  "EXEC msdb.dbo.sp_update_job @job_name=N""" +j.name + """, @owner_login_name=N""" + RTRIM(LTRIM(@login_name)) + """;" AS CommadText
FROM msdb.dbo.sysjobs j
INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
INNER JOIN sys.syslogins l ON l.sid = j.owner_sid
WHERE l.name !="sa"
ORDER BY j.name;

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”

案例描述:   今天遇到一个很有意思的SQL Server作业报错告警,作业出错的详细信息如下: Date        2021/6/23 12:34:00Log        Job History (YourSQLDba_BlockingSQL_Ale
SQL Server作业报“Unable to determine if the owner (xxxxxx) of job xxx has server access”
2014-12-20

编程热搜

目录