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
es ist, wenn mein cursor Pausen für einen zweiten 60-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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führen Sie ein Skript jede Sekunde für eine minute, Sie könnte so etwas wie dieses
Ich würde eine weitere Spalte Hinzufügen, in der temporären Tabelle #DiagTable
Session INT
und den Wert von @, die ich in dieser Spalte nur zum nachverfolgen der Datensätze, die eingefügt, die von jedemloop
.InformationsquelleAutor M.Ali
GO
ist eine batch-Anweisung.GO 60
sagt, laufen die über 60-mal.InformationsquelleAutor sam yi