我正在使用SQL Server 2008 r2。我想找到一种方法来验证SQL Server代理是否正在运行。我怀疑代理没有运行,但我不知道如何检查。
答案 0 :(得分:27)
在Management Studio中,您可以通过查看对象资源管理器中的SQL Server代理节点来检查SQL Server代理是否正在运行。在下面的屏幕截图中,我的SQL Server 2012实例上的SQL Server代理正在运行(SQL Server代理图标上覆盖了绿色箭头),但SQL Server 2000的代理程序已停止(红色x)。
您还可以在“控制面板”中查看>管理工具>服务:
或在程序文件中> SQL Server>配置工具>配置管理器:
最后,您可以使用T-SQL检查状态:
DECLARE @agent NVARCHAR(512);
SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')),
N'SQLServerAgent');
EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;
答案 1 :(得分:6)
如果SQL Server代理正在运行,则SQL Server Management Studio中SQL Server代理图标的右下角将显示绿色播放按钮。
要使用T-SQL验证给定实例的SQL Server代理的状态,请执行以下代码段:
IF EXISTS ( SELECT 1
FROM master.dbo.sysprocesses
WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'
END
ELSE
BEGIN
SELECT @@SERVERNAME AS 'InstanceName', 0 AS 'SQLServerAgentRunning'
END
来源= Colin Stasiuk
答案 2 :(得分:4)
确定SQL Agent是否正在运行并且可以在SSMS中轻松完成的最快,最简单,最直接的方法是查询(因此可以自动执行),和不是查询已弃用的系统表(即sysprocesses
)或EXECing xp_servicecontrol
,是在SP1中为SQL Server 2008 R2引入的DMV:
SELECT dss.[status], dss.[status_desc]
FROM sys.dm_server_services dss
WHERE dss.[servicename] LIKE N'SQL Server Agent (%';
返回:
status status_desc
4 Running
它只需要VIEW SERVER STATE
服务器权限,但您已经需要它以便在对象资源管理器(在SSMS中)中查看它的状态。
并且,如果您不想将VIEW SERVER STATE
授予特定的登录,因为它允许获取太多其他信息,那么您在技术上根本不需要授予任何内容,至少不需要授予任何内容。实际用户。有关详细信息(包括一个工作示例),请参阅我在DBA.StackExchange上关于类似问题的答案:
答案 3 :(得分:3)
IF EXISTS (SELECT 1 FROM sysprocesses WHERE LEFT(program_name, 8) = 'SQLAgent')
PRINT 'Agent is running!'
ELSE
PRINT 'Agent is not connected!';
让我知道这是否有效,请尝试这个
IF EXISTS ( SELECT 1
FROM master.dbo.sysprocesses
WHERE program_name = N'SQLAgent - Generic Refresher')
BEGIN
SELECT @@SERVERNAME AS 'InstanceName', 1 AS 'SQLServerAgentRunning'
END
ELSE
BEGIN
SELECT @@SERVERNAME AS 'InstanceName', 0 AS 'SQLServerAgentRunning'
END
答案 4 :(得分:2)
自动检查SQL Server代理是否与此批处理文件一起运行。
如果服务尚未运行,它将开始启动服务。
您需要为某些版本的MSSQL调整服务名称(SQLServerAgent)。
echo off
echo Test SQL Server Agent Service
for /F "tokens=3 delims=: " %%H in ('sc query "SQLServerAgent" ^| findstr "STATE"') do (
if /I "%%H" NEQ "RUNNING" (
echo service was stopped, starting service
rem put your optional errorlog or warning message here
net start "SQLServerAgent"
)
)
答案 5 :(得分:0)
这是我在powershell中使用的
Get-Service | Where-Object -like -value '*sql*agent*' -Property 'name'
答案 6 :(得分:0)
在2020年针对Sql Server Developer Addition 2019更新了
查看->注册服务器->本地服务器组
这应该列出所有本地服务器。如果服务器显示红色X,则将其停止。或者,您可以右键单击它,然后转到“服务控制”。从那里您可以开始/停止重新启动等。