SQL-While-Schleife 60 Sekunden?

Ich bin im Grunde versucht, zu caputure sql-Befehle und deren Wartezeit für die CPU, und ich will einfach ausführen, um eine while-Schleife für 60 Sekunden, und legen Sie alle Daten in eine temp-Tabelle. Ich bin nicht sehr gut beim Cursor, oder, wie dies eine in sql.

BEGINNEN 
CREATE TABLE #DiagTable 
( 
sessionID NVARCHAR (MAX), 
dbname NVARCHAR (MAX), 
starttime NVARCHAR (MAX), 
cmd NVARCHAR (MAX), 
stat NVARCHAR (MAX), 
cputime NVARCHAR (MAX), 
totalelapsedtime NVARCHAR (MAX), 
liest NVARCHAR (MAX), 
schreibt NVARCHAR (MAX), 
[query] NVARCHAR (MAX) 
) 

DECLARE @id INT 



ERKLÄREN 
x-CURSOR FÜR 
WÄHLEN Sie 60 

OPEN x 

FETCH NEXT FROM x IN @id 



WHILE @@FETCH_STATUS = 0 
BEGINNEN 
WAITFOR DELAY '000:00:01' 

-- begin loop hier 
INSERT INTO #DiagTable 
WÄHLEN Sie eine.session_id, 
db_name (ein.database_id) AS db_name, 
ein.start_time, 
ein.Befehl, 
ein.status 
ein.cpu_time, 
ein.total_elapsed_time, 
ein.liest, 
ein.schreibt, 
b.text ALS Abfrage 
Die VON sys.dynamischen Verwaltungssichten dm_exec_requests ein 
OUTER APPLY sys.dm_exec_sql_text (ein.sql_handle) b 
WO eine.session_id > 50 -- herausfiltern von hintergrund-tasks 
UND eine.session_id @@spid -- filter out this query session 
UM VON einem.cpu_time DESC; 

WAITFOR DELAY '00:00:01' 

FETCH NEXT FROM x IN @id 
ENDE 

SCHLIEßEN x 

FREIGEBEN x 

-- Ende Schleife hier 
WÄHLEN Sie * VON #DiagTable; 

DROP TABLE #DiagTable; 
ENDE 

nicht sicher, wenn Sie wählen Sie 60 ist, was ich will...

Was meinst du damit "eine while-Schleife für 60 Sekunden"? Meinst du, dass Sie möchten, zu erfassen, diese Daten werden einmal pro Sekunde für 60 Sekunden (so dass Sie bekommen würde, 60 Sätze von Abfragen)? Oder möchten Sie erfassen diese Daten alle 60 Sekunden ist, n-mal?
Könnte man mit einer while-Schleife mit WAITFOR technet.microsoft.com/en-us/library/ms187331.aspx
Siehe mein edit, im Grunde jede Sekunde 1 minute möchte ich ausführen einer select-Befehl insert in eine temporäre Tabelle
WAITFOR ist wie ein sleep-Befehl, nur es hält so lange. Glaube nicht, dass das, was der OP nach.
es ist, wenn mein cursor Pausen für einen zweiten 60-mal

InformationsquelleAutor | 2013-12-06

Schreibe einen Kommentar