案例描述
昨晚踢球回来,接到电话说一个系统的几个比较重要作业出错,导致系统数据有些问题。让我赶紧检查看看。检查作业日志时发现,作业报如下错误(关键信息用xxx替换)
The job failed. Unable to determine if the owner (xxxx\xxxx) of job xxxxx has server access (reason: Could not obtain information about Windows NT group/user 'xxxx\xxxx', error code 0x5. [SQLSTATE 42000] (Error 15404)).
检查告警邮件时,发现不止这个服务器的作业出现此类问题,而且发现有不少服务器都出现了此类错误。
案例分析
出现这个问题是因为这些服务器的SQL Server 服务启动帐户是用一个域账号(暂且用域账号A表示)启动的,而这个域账号A 居然被锁了(后面联系系统管理员检查后确认的)。导致数据库作业(作业的所有者(Job Owner)为域账号B,我使用的数据库管理员账户)出现上面错误。紧急情况是将作业的所有者改为sa,能保证作业运行不出错。当然问题的根源还是域账号被锁引起权限问题。
案例延伸
今天还测试了一下,当域账号被锁的情况下,启动SQL Server服务时,你会发现SQL Server服务启动失败,但是错误日志不会记录任何日志信息,如果不知道原因,肯定会被这个给弄懵。因为服务启动失败,但是又没有写入任何错误信息。如何你遇到这个情况,最好检查一下系统日志你应该会看到类似下面的错误信息。这样方便你发现蛛丝马迹!