通过 T-SQL 脚本或 PowerShell 启用 SQL 服务器代理服务

Pus*_*kar 8 sql-server powershell sql-server-2014

我们可以通过 T-SQL 脚本或 PowerShell/cmd 启用/禁用 SQL 服务器代理服务吗?

小智 7

这将取决于您正在运行的 PowerShell 版本,但此命令至少可以在 3.0 及更高版本中使用:

Set-Service SQLSERVERAGENT -StartupType Disabled
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

另一种方法是使用 WMI,或者您可以使用 SQL Server WMI(microsoft.sqlserver.management.smo.wmi 命名空间)。

在 T-SQL 中,没有允许您与服务交互的本机机制。除了使用xp_cmdshell和调用 PowerShell 或 cmd 命令。


Md *_*han 4

在不忽视 @ Shawn Melton的答案中所述的任何内容的情况下,有一个特定的未记录的存储过程可以执行此操作。这是xp_servicecontrol。通过它可以启动、停止和检查TSQL中SQL Server代理服务的服务状态。

如果要启动、停止或查看 SQL Server 代理服务的“正在运行/正在停止”状态,语法为:

EXEC xp_servicecontrol N'Querystate|Start|Stop',N'Service Name' 
Run Code Online (Sandbox Code Playgroud)

如果要通过TSQL启动SQLServer代理服务,则语法如下:

启动 SQL Server 代理

EXEC xp_servicecontrol N'START',N'SQLServerAGENT';
GO
Run Code Online (Sandbox Code Playgroud)

停止 SQL Server 代理

EXEC xp_servicecontrol N'STOP',N'SQLServerAGENT';
GO
Run Code Online (Sandbox Code Playgroud)

如果要查看 SQL Server 代理服务的服务状态,则语法为:

EXEC xp_servicecontrol N'querystate',N'SQLServerAGENT';
Go
Run Code Online (Sandbox Code Playgroud)

启动 SQL Server Agent 服务后,您将收到如下消息

服务开始

消息 22003,级别 1,状态 0

停止 SQL Server 代理服务后,您将收到如下消息

服务已停止

消息 22003,级别 1,状态 0

注意:-xp_servicecontrol是一个未记录的系统存储过程,因此您不会获得任何支持,而且有可能发生代码更改或参数更改,因此如果您决定使用它,请注意这一点。

请参阅此处此处以供参考。