qin*_*126 13 sql-server asp.net session session-state sql-server-2008
我正在使用SQL Server 2008 r2.我想找到一种方法来验证SQL Server代理是否正在运行.我怀疑代理没有运行,但我不知道如何检查.
Aar*_*and 29
在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;
Run Code Online (Sandbox Code Playgroud)
如果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
Run Code Online (Sandbox Code Playgroud)
来源= Colin Stasiuk
确定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 (%';
Run Code Online (Sandbox Code Playgroud)
返回值:
status status_desc
4 Running
Run Code Online (Sandbox Code Playgroud)
它只需要VIEW SERVER STATE服务器权限,但是您已经需要它才能在Object Explorer(在SSMS中)中查看其状态。
并且,如果您不希望授予VIEW SERVER STATE特定的登录名,因为它允许获取太多其他信息,那么从技术上讲,您根本不需要授予任何东西,至少不需要授予实际用户。有关完整的详细信息,请参见以下两个资源(包括工作示例):
| 归档时间: |
|
| 查看次数: |
40192 次 |
| 最近记录: |