SqlServerAgent 服务开机自动启动,然后执行EXEC master.dbo.xp_servicecontrol N'START',N'SQLSERVERAGENT'  出现StartService() 返回错误 1056,“服务的范例已在运行中。” 
请教,应如何根据SqlServerAgent 服务当前状态再执行启动服务语句,就是先查询SqlServerAgent 服务的当前状态(EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'SQLSERVERAGENT'),如为Running,就不执行启动服务语句,否则执行启动服务语句。谢谢!!

解决方案 »

  1.   

    DECLARE @temp TABLE([state] NVARCHAR(255))
    INSERT @temp([state])
    EXEC master.dbo.xp_servicecontrol N'QUERYSTATE',N'SQLSERVERAGENT'IF(SELECT TOP(1) [state] FROM @temp) <> 'Running.' --Running./Stopped.
    BEGIN
    EXEC master.dbo.xp_servicecontrol N'START',N'SQLSERVERAGENT'
    END
      

  2.   

    收藏,好语句。如果会powershell的话也可以用powershell来实现
      

  3.   

    服务器: 消息 197,级别 15,状态 1,行 5
    无法在向表插入变量时将 EXECUTE 用作源。
    服务器: 消息 170,级别 15,状态 1,行 5
    第 5 行: '(' 附近有语法错误。
    运行一楼代码,出现上面错误,继续求解!
      

  4.   

    难道你用的是2000?2005及以上都没问题。用下面方法实现:
    IF object_id('tempdb..#temp', 'u') IS NOT NULL DROP TABLE #temp
    CREATE TABLE #temp ([state] NVARCHAR(255))
    DECLARE @sql NVARCHAR(MAX)
    SET @sql = '
    INSERT INTO #temp([state])
    EXEC master.dbo.xp_servicecontrol N''QUERYSTATE'',N''SQLSERVERAGENT''
    '
    EXEC (@sql)
    IF(SELECT TOP(1) [state] FROM #temp) <> 'Running.'    --Running./Stopped.
    BEGIN
        EXEC master.dbo.xp_servicecontrol N'START',N'SQLSERVERAGENT'
    END
      

  5.   

    服务器: 消息 170,级别 15,状态 1,行 3
    第 3 行: 'MAX' 附近有语法错误。
    服务器: 消息 137,级别 15,状态 1,行 8
    必须声明变量 '@sql'。
    服务器: 消息 137,级别 15,状态 1,行 8
    必须声明变量 '@sql'。
    服务器: 消息 170,级别 15,状态 1,行 9
    第 9 行: '(' 附近有语法错误。
    新代码错误好象更多,我用的是SQL2000,继续求解!
      

  6.   

    IF object_id('tempdb..#temp', 'u') IS NOT NULL DROP TABLE #temp
    CREATE TABLE #temp ([state] VARCHAR(255))
    DECLARE @sql VARCHAR(1000)
    SET @sql = '
    INSERT INTO #temp([state])
    EXEC master.dbo.xp_servicecontrol N''QUERYSTATE'',N''SQLSERVERAGENT''
    '
    EXEC (@sql)
    IF(SELECT TOP(1) [state] FROM #temp) <> 'Running.'    --Running./Stopped.
    BEGIN
        EXEC master.dbo.xp_servicecontrol N'START',N'SQLSERVERAGENT'
    END
      

  7.   

    楼主应该自己看一下出错的原因,SQL并不并复杂。自己调试一下