这开始是因为我试图确定为什么我没有收到来自 SQL Server 2012 标准版默认实例的电子邮件。代理作业一直运行良好,但最后一次尝试在服务器上发送电子邮件并成功是在 2016 年 2 月 2 日,下一次尝试的电子邮件是在 2016 年 3 月 8 日(该电子邮件以及所有后续电子邮件的 sent_account_id 和sent_status 为 0)。
我决定删除当前的电子邮件配置并在默认实例上从头开始重新配置,这需要重新启动代理服务,以便它能够通过电子邮件发送通知。重新启动代理服务不成功。SQLAGENT.OUT 显示:
2016-03-15 17:16:04 - ? [100] Microsoft SQLServerAgent version 11.0.6020.0 (X64 unicode retail build) : Process ID 5608
2016-03-15 17:16:04 - ? [495] The SQL Server Agent startup service account is OurDomain\DomainServiceAccount.
2016-03-15 17:16:04 - ? [393] Waiting for SQL Server to recover database 'msdb'...
2016-03-15 17:16:04 - ? [000] Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457) Configuration option 'Agent XPs' changed from 0 to 1. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457) Configuration option 'show advanced options' changed from 1 to 0. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457)
2016-03-15 17:16:04 - ? [101] SQL Server S-SW-DEVSQLAX version 11.00.6020 (0 connection limit)
2016-03-15 17:16:04 - ? [102] SQL Server ODBC driver version 11.00.6020
2016-03-15 17:16:04 - ? [103] NetLib being used by driver is DBNETLIB; Local host server is
2016-03-15 17:16:04 - ? [310] 4 processor(s) and 16384 MB RAM detected
2016-03-15 17:16:04 - ? [339] Local computer is S-SW-DEVSQLAX running Windows NT 6.1 (7601) Service Pack 1
2016-03-15 17:16:04 - ! [000] This installation of SQL Server Agent is disabled. The edition of SQL Server that installed this service does not support SQL Server Agent.
2016-03-15 17:16:04 - ? [000] Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457) Configuration option 'Agent XPs' changed from 1 to 0. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457) Configuration option 'show advanced options' changed from 1 to 0. Run the RECONFIGURE statement to install. [SQLSTATE 01000] (Message 15457)
2016-03-15 17:16:04 - ? [098] SQLServerAgent terminated (normally)
倒数第三行最有意思:“安装此服务的 SQL Server 版本不支持 SQL Server Agent。” 据我所知,这台服务器上从未有过 Express Edition 实例。此服务器上有两个 Standard Edition 实例,它们都有相同的电子邮件问题,并且在任一实例中执行“SELECT @@VERSION”都会返回:
Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) 2015 年 10 月 20 日 15:36:27 版权所有 (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) (管理程序)
该服务是在 2016 年 2 月 8 日安装 SP3 后新启动的,所以在那之后一定发生了一些变化,导致代理出现一些问题。我找到了另一台服务器(同一项目的测试实例)并发现了相同的问题,该问题在 2015 年 7 月 27 日到 2015 年 9 月 5 日之间的某个时间开始,并且在该范围内(或此后)没有应用 SQL Server 更新。
虽然解决电子邮件问题是让我走上这条道路的原因,但让代理再次运行是更高的优先级(并且可能会解决电子邮件问题)。
当它显然是标准版并且代理服务在服务重新启动前几分钟运行作业时,是什么可能导致代理混淆认为这是一个快速版实例?
我没有在此服务器上的第二个实例上重新启动代理服务,该服务器一直在成功运行作业(与默认实例上的服务一样,直到尝试重新启动服务)。
[添加] 尝试更改要由本地服务帐户运行的代理服务导致“系统找不到指定的文件。[0x80070002]”
我在 SQL 错误日志中发现了这一点:
在队列“msdb.dbo.ExternalMailQueue”上运行的激活过程“[dbo].[sp_sysmail_activate]”输出以下内容:“无法创建 DatabaseMail.exe 进程。执行 API 'CreateProcess' 失败,错误号为 2。