2012-07-24 11 views
9

मैं SQL Server 2008 r2 का उपयोग कर रहा हूं। मैं यह सत्यापित करने का एक तरीका खोजना चाहता हूं कि SQL सर्वर एजेंट चल रहा है या नहीं। मुझे संदेह है कि एजेंट नहीं चल रहा है, लेकिन मुझे नहीं पता कि कैसे जांचें।यह जांचने के लिए कि क्या SQL सर्वर एजेंट चल रहा है

+1

आप जाँच करना चाहते हैं है मैन्युअल? या एसक्यूएल से? – RedFilter

+1

या कोड से ...? –

+0

यदि यह संभव है, तो मैं एसक्यूएल सर्वर प्रबंधन स्टूडियो – qinking126

उत्तर

23

प्रबंधन स्टूडियो में, आप यह जांच सकते हैं कि SQL सर्वर एजेंट ऑब्जेक्ट एक्सप्लोरर में SQL सर्वर एजेंट नोड को देखकर चल रहा है या नहीं। निम्न स्क्रीन शॉट में, मेरे SQL सर्वर 2012 इंस्टेंस पर SQL सर्वर एजेंट चल रहा है (SQL सर्वर एजेंट आइकन पर हरा तीर ओवरलैड), लेकिन SQL Server 2000 के लिए एजेंट बंद कर दिया गया है (लाल x)।

enter image description here

तुम भी नियंत्रण कक्ष> व्यवस्थापकीय उपकरण में जाँच कर सकते हैं> सेवाएं:

enter image description here

या प्रोग्राम फ़ाइलें> एसक्यूएल सर्वर> विन्यास उपकरण> कॉन्फ़िगरेशन मैनेजर में:

enter image description here

अंत में, आप जांच सकते हैं राज्य T-SQL का उपयोग कर:

DECLARE @agent NVARCHAR(512); 

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

EXEC master.dbo.xp_servicecontrol 'QueryState', @agent; 
+0

से जांचना पसंद करता हूं, तीर के बजाए प्रबंधन स्टूडियो में, मुझे हरे रंग की सीमा वाला एक सफेद सर्कल दिखाई देता है। इसका क्या मतलब है ? लेकिन, कॉन्फ़िगरेशन मैनेजर में, मुझे लगता है कि यह चल रहा है (सफेद सर्कल के अंदर हरा तीर)। – Steam

+0

सर्वरों में से एक में, इस स्क्रिप्ट ने त्रुटि उत्पन्न की - ऑब्जेक्ट 'xp_servicecontrol', डेटाबेस 'मास्टर', मालिक 'dbo' पर EXECUTE अनुमति अस्वीकार कर दी गई। – Steam

+0

@blasto कि एक स्क्रिप्ट समस्या नहीं है, यह एक अनुमति समस्या है। संभवतः आपको किसी सेवा की स्थिति से पूछताछ करने के लिए सही अनुमतियां होनी चाहिए, इससे कोई फर्क नहीं पड़ता कि आप किस स्क्रिप्ट या यूआई विधि का उपयोग करते हैं। –

6

एसक्यूएल सर्वर एजेंट चल रहा है, एक हरे रंग की प्ले बटन एसक्यूएल सर्वर प्रबंधन स्टूडियो के भीतर एसक्यूएल सर्वर एजेंट आइकन के नीचे दाएं कोने में दिखाया जाएगा।

T-SQL निष्पादित निम्नलिखित कोड का टुकड़ा का उपयोग कर किसी दिए गए उदाहरण के लिए SQL सर्वर एजेंट की स्थिति को मान्य करने के लिए:

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

+0

मैंने देखा कि आप एजेंट को रोक सकते हैं प्रबंधन स्टूडियो से। लेकिन, उसके बाद आप इसे वहां से पुनरारंभ नहीं कर सकते हैं। आप विंडोज सेवाओं से पुनरारंभ कर सकते हैं। मुझे आश्चर्य है कि ऐसा क्यों है। – Steam

+0

यह मेरे लिए काम किया। मैंने अपने इंस्टेंसनाम के लिए '1' देखा। 2000, 05, 08R2 – Steam

+1

^^^^^ sysprocesses को SQL Server 2005 के बाद से बहिष्कृत कर दिया गया है, इसलिए नहीं, आपको सीधे उस उत्तर का उपयोग नहीं करना चाहिए, जब तक कि आप इसे बाद में लिखना नहीं चाहते – Steam

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/

+0

आपने कॉलिन का क्यों जोड़ा आपके उत्तर में कोड नमूना, जो जॉन सैमसन का जवाब 7 मिनट पहले था? दुर्भाग्य से –

+0

, मैंने इसे चेक नहीं किया। –

+1

लेकिन अब आप इसे हटा सकते हैं, जिसे आप जानते हैं। दो अलग-अलग उत्तरों में सटीक कोड कोड नमूना रखने में बिल्कुल कोई मूल्य नहीं है। ' –

2

SQL सर्वर एजेंट इस बैच फ़ाइल के साथ चल रहा है तो स्वचालित जांच।

यह सेवा शुरू करना शुरू कर देगा यदि यह पहले से नहीं चल रहा है।

आपको 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" 
) 
) 
4

तेज़ और सबसे आसान, सबसे directest अगर एसक्यूएल एजेंट निर्धारित करने के लिए जिस तरह से एक प्रश्न (इसलिए यह स्वचालित किया जा सकता), और क्वेरी करने नहीं है चल रहा है, और कहा कि SSMS में आसानी से किया जा सकता है, है एक बहिष्कृत प्रणाली तालिका (यानी

sys.dm_server_services

SELECT dss.[status], dss.[status_desc] 
FROM sys.dm_server_services dss 
WHERE dss.[servicename] LIKE N'SQL Server Agent (%'; 

रिटर्न: sysprocesses) या xp_servicecontrol EXECing, एक DMV कि SQL सर्वर 2008 R2 के लिए SP1 में पेश किया गया था है

status status_desc 
4  Running 

यह सिर्फ VIEW SERVER STATE सर्वर अनुमति की आवश्यकता है, लेकिन ऑब्जेक्ट एक्सप्लोरर (एसएसएमएस में) में इसकी स्थिति देखने के लिए आपको पहले से ही आवश्यकता है।

और, यदि आप किसी विशेष लॉगिन के लिए VIEW SERVER STATE प्रदान नहीं करना चाहते हैं क्योंकि यह बहुत अधिक जानकारी प्राप्त करने की अनुमति देता है, तो तकनीकी रूप से आपको कम से कम किसी वास्तविक उपयोगकर्ता को कुछ भी प्रदान करने की आवश्यकता नहीं है। विवरण (एक काम उदाहरण सहित) के लिए एक समान प्रश्न पर DBA.StackExchange पर मेरा उत्तर देखें:

What minimum permissions do I need to provide to a user so that it can check the status of SQL Server Agent Service?

0

यह है कि मैं क्या powershell में उपयोग

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

संबंधित मुद्दे