【问题标题】:How to fix error "SQL Server Agent stopped automatically"?如何修复错误“SQL Server 代理自动停止”?
【发布时间】:2015-06-01 19:21:44
【问题描述】:

我使用的是 SQL Server 2014,但遇到了问题。

任务管理器中,在服务选项卡上,我找到了SQLAgent$VILLBE_SQLSERVER(VILLBE是我的电脑名),右键单击并开始。

它开始并...在 1 秒后停止。

然后,我打开 services.msc,并启动 SQL Server 代理 (VILLBE_SQLSERVER)。它正在工作。

30 秒后,它自动停止。当我再次点击开始时,它说:

The SQL Server Agent (VILLBE_SQLSERVER) service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.

最后,我右键SQL Server Agent,选择Properties,设置Start up typeAutomatic,重启我的电脑。

重启完成后,SQL Server 代理仍然停止

其他一些服务:

SQL Server Browser - Running - Automatic (start up)

SQL Server (SQLEXPRESS) - Cannot start within warning: **Windows could not start the SQL Server (SQLEXPRESS) on Local Computer....error code 17058.**

你能给我解决这个问题吗?

谢谢!

【问题讨论】:

  • 你能看看windows事件日志吗,它应该提供更多关于服务器崩溃原因的信息

标签: sql-server-2014


【解决方案1】:

如果您正在运行 SQLEXPRESS,则 SQLAGENT 不会运行。 如果您正在运行 SQL2008 或 SQL2012,则可能您更改了 SQL SA 密码。 您可以将 SQL 服务身份验证从网络服务更改为本地系统,然后手动启动服务。

【讨论】:

  • 如果在本地计算机上发生这种情况而没有设置任何网络连接怎么办?
  • "如果您正在运行 SQLEXPRESS,则 SQLAGENT 不会运行。"这对我有帮助。我的 SQL Express 很好,代理不需要运行。
  • 通过在 C:\Program Files\Microsoft SQL Server\SERVER NAME\MSSQL\Log\SQLAGENT.OUT 中检查日志:The edition of SQL Server that installed this service does not support SQL Server Agent.
  • 这些 cmets 没有一个是正确的。我刚刚安装了 SQL Express 2014 并且服务器代理正在自动运行...我停止并尝试重新启动它现在它不会运行。
【解决方案2】:

SQL Server 代理必须以本地系统帐户登录。打开服务控制台(开始 > 运行 > 键入 services.msc)并找到“SQL Server 代理”服务并双击它。转到“登录”选项卡并确保选择“本地系统帐户”。确认后,您应该可以启动该服务了。您也可以使用“net start SQLAgent$SQLEXPRESS”命令。

Start, Stop, or Pause the SQL Server Agent Service

【讨论】:

  • 这是不正确的。 SQL Server 代理可以在任何有效的服务帐户下运行,包括本地系统、域或本地帐户。
【解决方案3】:

这可能是原因之一

1.转到 Sql Server 配置管理器

2.单击左侧面板中的 SQL Server 服务

3.右键单击右侧面板中的 SQL Server 代理并单击属性

4.转到服务选项卡

5.如果设置手动则自动更改启动类型

【讨论】:

  • 我的设置为手动。我会看看这是否能解决它。
【解决方案4】:

确保您没有使用 express 版本,您可以使用 setup.exe 文件修复 SQL Server,它将解决您的问题。

【讨论】:

    【解决方案5】:

    我必须授予运行 SQL Server 代理服务的用户对其日志的修改权限:

    C:\Program Files\Microsoft SQL Server\<SERVER NAME>\MSSQL.<INSTANCE NAME>\Log\SQLAGENT.OUT
    

    但是,我也没有使用 SQL Express。

    【讨论】:

      【解决方案6】:

      假设您正在尝试安排一些 SQL Server 自动化,在用完解决方案之前,注册一个您自己的用户定义的存储过程以在 SQL Server 实例启动时自动执行可能对您有用的解决方法,因为您可以编写你自己的调度循环,只要你的 SQL Server 服务启动,它就可以保持运行。

      在这种情况下,您应该知道所有 SQL Server 版本(包括 Express)都提供了一个系统存储过程名称 sp_procoption,它允许您为自动启动注册一个存储过程。

      exec sp_procoption @ProcName = ['put your procedure name'], @OptionName = 'STARTUP', @OptionValue = [on|off]
      

      为了进一步阅读,我建议检查Armando Prato's excellent articlethis SQL Server Online Book

      希望对你有帮助!

      【讨论】:

        【解决方案7】:

        如果您进行了多次升级,则之前的升级为您提供的 SID 与您的 SQLServerAgent 帐户不匹配。 (NT 服务\SQLSERVERAGENT)。文件夹 ./MSSQL/LOG 很可能包含当前 SQLSERVERAGENT 帐户没有读取权限的文件。我发现您先修改文件夹,然后修改每个最新文件以获得权限,或者更简单,只需重新启动即可。

        【讨论】:

          【解决方案8】:

          正如dvhh 在主要问题中所建议的,您可以查看事件查看器 -> Windows 日志 -> 应用程序 日志。在“SQLAgent$”下,您可能会看到一个错误。对于我正在分析的数据库:

          无法启动 SQLServerAgent(原因:此 SQL Server Agent 安装已禁用。安装此服务的 SQL Server 版本不支持 SQL Server Agent。)。

          【讨论】:

            【解决方案9】:

            请检查用于启动 sql server 代理的帐户。 在 SSMS 上,转到“对象资源管理器”并在“安全|登录”下搜索帐户。请确保 SQL Server 代理帐户具有正确的权限。

            例如,如果您检查“SQL Server 代理 | 错误日志”下的 SQL 日志,您可能会看到如下错误消息:

            "消息 [000] 对对象“sp_sqlagent_update_agent_xps”、数据库“msdb”、模式“dbo”的执行权限被拒绝。 [SQLSTATE 42000](错误 229)"

            在这种情况下,向用户授予执行权限将解决问题。 请注意,不包括 sql server 标准角色和“执行者角色”。因此,您需要创建一个或赋予一个系统管理员角色。

            示例 Sql Server Agent 以“localsystem”开头,提供 sysadmin 或 executor 角色以登录“NT AUTHORITY\SYSTEM”

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-16
              相关资源
              最近更新 更多