2012-06-21 11 views
6

मैं की आवश्यकता होती है एक भी संग्रहीत प्रक्रिया है जिससे निष्पादित औरएसक्यूएल सर्वर में सभी निष्पादित प्रश्नों प्राप्त

और "वर्तमान में चल नहीं" "वर्तमान कनेक्शन जो पहले रन है के लिए सभी एसक्यूएल" दिखा सकते हैं है।

मैंने इस बारे में बहुत कुछ खोजा है और मुझे जवाब नहीं मिल रहा है। कृपया इस पर मेरी सहायता करें।

उत्तर

9

इस कार्य के लिए प्रोफाइलर का उपयोग करना बेहतर है।

लेकिन आप SQL Server 2005+ में एक प्रश्न आप सिस्टम विचारों sys.dm_exec_query_stats, जो returns aggregate performance statistics for cached query plans लेकिन केवल भुनाया योजनाओं के लिए, और sys.dm_exec_sql_text उपयोग कर सकते हैं चाहते हैं। दुर्भाग्यवश उनके पास सत्र आईडी के बारे में जानकारी नहीं है, इसलिए आप सर्वर इंस्टेंस के केवल कैश किए गए प्रश्न प्राप्त कर सकते हैं।

set transaction isolation level read uncommitted 
select top 1000 
    creation_time, 
    last_execution_time, 
    case 
     when sql_handle IS NULL then ' ' 
     else(substring(st.text,(qs.statement_start_offset+2)/2,(
      case 
       when qs.statement_end_offset =-1 then len(convert(nvarchar(MAX),st.text))*2  
       else qs.statement_end_offset  
      end - qs.statement_start_offset)/2 )) 
    end as query_text, 
    db_name(st.dbid)as db_name, 
    object_schema_name(st.objectid, st.dbid)+'.'+object_name(st.objectid, st.dbid) as object_name 
FROM sys.dm_exec_query_stats qs 
    cross apply sys.dm_exec_sql_text(sql_handle) st 
ORDER BY db_name, object_name 
+0

महान :)। यही वह था जिसे मैं ढूंढ रहा था। बहुत धन्यवाद –

+0

@ प्राइतेश गुप्ता आपका स्वागत है। –

4

ओरेकल में:

How do I show running processes in Oracle DB?

SQL server 2005+ में आप SPID मुझे लगता है कि का उपयोग कर पिछले अभियानों पता कर सकते हैं। यह आपको XXX एसपीआईडी ​​के साथ प्रक्रिया प्राप्त करेगा। शायद आप चल रहे प्रक्रिया 'एसपीआईडी ​​प्राप्त कर सकते हैं और चल रहे किसी के एसपीआईडी ​​तक लूप बना सकते हैं। तो आप चल रही प्रक्रियाओं तक सभी प्रक्रियाएं प्राप्त कर सकते हैं।

DECLARE @sqltxt VARBINARY(128) 
SELECT @sqltxt = sql_handle 
FROM sys.sysprocesses 
WHERE spid = XXX 
SELECT TEXT 
FROM sys.dm_exec_sql_text(@sqltext) 
GO 

इसके अलावा आप इनके द्वारा एसक्यूएल स्टेटमेंट चला सकते हैं;

SELECT sqltext.TEXT, 
req.session_id, 
req.status, 
req.command, 
req.cpu_time, 
req.total_elapsed_time 
FROM sys.dm_exec_requests req 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 

यह आपके लिए उपयोगी होगा। मुझे लगता है कि

+0

क्या sys.dm_exec_requests में वर्तमान में क्वेरी निष्पादित करने के बारे में जानकारी नहीं है? –

+0

इगोर, हाँ। यह दौड़ने वाले हो जाएगा। फिर से संपादन:/ – alicanbatur

+0

http://blog.sqlauthority.com/2009/07/19/sql-server-get-last-running-query-based-on-spid/ में प्रति सत्र निष्पादित अंतिम क्वेरी दिखाने के 3 तरीके हैं । मुझे 'डीबीसीसी इनपूटबफर (@DesiredSPID)' पसंद है। – milivojeviCH

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