17

SQL Server2008r2を使用しています。SQLServerエージェントが実行されているかどうかを確認する方法を見つけたいです。エージェントが実行されていないのではないかと疑っていますが、確認方法がわかりません。

4

7 に答える 7

36

Management Studioでは、オブジェクトエクスプローラーでSQL Serverエージェントノードを確認することにより、SQLServerエージェントが実行されているかどうかを確認できます。次のスクリーンショットでは、SQL Server2012インスタンスのSQLServerエージェントは実行されていますが(SQL Serverエージェントアイコンに緑色の矢印が重なっています)、SQL Server 2000のエージェントは停止しています(赤いx)。

ここに画像の説明を入力してください

[コントロールパネル]>[管理ツール]>[サービス]で確認することもできます。

ここに画像の説明を入力してください

または、[プログラムファイル]> [Microsoft SQLServer]>[構成ツール]>[構成マネージャー]で:

ここに画像の説明を入力してください

最後に、T-SQLを使用して状態を確認できます。

DECLARE @agent NVARCHAR(512);

SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')), 
  N'SQLServerAgent');

EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;
于 2012-07-24T14:29:59.710 に答える
10

SQL Serverエージェントが実行されている場合、SQL ServerManagementStudio内のSQLServerエージェントアイコンの右下隅に緑色の再生ボタンが表示されます。

T-SQLを使用して特定のインスタンスのSQLServerエージェントのステータスを検証するには、次のコードスニペットを実行します。

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

出典=コリン・スタシュク

于 2012-07-24T14:31:55.453 に答える
9

SQL Agentが実行されているかどうかを判断するための最も速く、最も簡単で、最も直接的な方法であり、SSMSで簡単に実行できます。これはクエリであり(したがって自動化できます)、推奨のシステムテーブル(つまりsysprocesses)をクエリしたり、EXECを実行したりすることはありません。xp_servicecontrolは、SQL Server2008R2のSP1で導入されたDMVです。

sys.dm_server_services

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したくない場合は、少なくとも実際のユーザーには、技術的には何も付与する必要はありません。詳細(実例を含む)については、次の2つのリソースを参照してください。

于 2015-06-04T02:18:54.300 に答える
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

参照: http: //benchmarkitconsulting.com/colin-stasiuk/2009/07/20/check-sql-server-agent-status-on-all-sql-servers/

于 2012-07-24T14:39:23.053 に答える
2

SQLServerエージェントがこのバッチファイルで実行されているかどうかのチェックを自動化します。

まだ実行されていない場合は、サービスの開始を開始します。

一部のバージョンの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"
  )
)
于 2012-12-14T17:00:32.023 に答える
1

これは私がPowerShellで使用しているものです

Get-Service | Where-Object -like -value '*sql*agent*' -Property 'name'

于 2015-07-30T15:12:27.610 に答える
0

2020年にSQLServerDeveloperAddition2019用に更新されました

表示->登録済みサーバー->ローカルサーバーグループ

これにより、すべてのローカルサーバーが一覧表示されます。サーバーのそばに赤いXがある場合、それは停止しています。または、それを右クリックしてサービスコントロールに移動することもできます。そこから、再起動の開始/停止などを行うことができます。

于 2020-05-12T13:01:08.180 に答える