Re: SQL Server steht auf der Bremse

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo Christoph,

hier ist mein Code.
DECLARE targetID_cursor CURSOR LOCAL FORWARD_ONLY FOR
SELECT TargetID FROM tblTarget WHERE (Share = @share) AND (Filer = @filer)
AND (Dir like '\' + @directory + '%')
OPEN targetID_cursor
FETCH NEXT FROM targetID_cursor INTO @TargetID
DECLARE @counter INT
set @Counter =0
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Counter = @Counter + 1
DECLARE @QuotaID INT
IF (SELECT COUNT(*) FROM tblQ WHERE (Filer = @Filer) AND (Share = @Share)
AND (Directory = @Directory) AND (SID = @SID)) = 0
BEGIN
INSERT INTO ....
SET @QuotaID = @@IDENTITY
END
ELSE
BEGIN
UPDATE tblQuotas
....
SET @QuotaID = (SELECT QuotaID FROM tblQuotas WHERE (Filer = @Filer) AND
(Share = @Share) AND (Directory = @Directory) AND (SID = @SID))
END
IF (SELECT COUNT(*) FROM tblQ_MAP WHERE (QID = @QuotaID)) = 0
BEGIN
....
END
FETCH NEXT FROM targetID_cursor INTO @DfsTargetID
END
CLOSE targetID_cursor
DEALLOCATE targetID_cursor

"Christoph Ingenhaag" wrote:

Hi Andy,

da blockt sich bestimmt was.

Aber egal, sieh zu das du die Cursorverarbeitung los wirst!!!! Nur in ganz
wenigen Szenarien braucht man Cursor.
Bei dem was du schreibst, kann ich mir nicht vorstellen, das du Cursor
brauchst.
Schau auch mal hier:
http://blogs.msdn.com/sqlprogrammability/archive/2008/03/18/increase-your-sql-server-performance-by-replacing-cursors-with-set-operations.aspx

Poste mal den Code der SP...

Viele Grüße
Christoph

"AndyL" <AndyL@xxxxxxxxxxxxxxxxxxxxxxxxx> schrieb im Newsbeitrag
news:7B973446-A724-4F6B-8C4E-E175A8B87710@xxxxxxxxxxxxxxxx
Hallo,

ich habe einen komischen Effekt. Mein SQL Server (Version 9.0.4035) läuft
auf einem W2k3R2 SP2.
Ich habe eine stored procedure die mit cursor arbeitet und entsprechend
Tabellen aktualisiert.
diese SP wird in (max 50 Threads) tausende mal aufgerufen. zu beginn
skaliert der SQL Server über alle 4 Prozessoren.
Nach 2-3 Stunden dauert das ausführen der SP statt 1 Sekunde plötzlich 10
Sekunden und die Systemlast sinkt von über 90% auf unter 30%

Wenn ich den SQL stoppe und neu starte funktioniert wieder alles wie
gewohnt. Manchmal auch erst nach einem reboot.
An was könnte das liegen. Den Paged Pool und Non Paged Pool ist es nicht.
Der bleibt Konstant. Die Speicherauslastung insgesamt bleibt auch relativ
stabil.

Kennt jemand diesen Effekt und was macht man dagegen?

Danke

andy


.



Relevant Pages

  • Re: nested cursor declarations through dynamic sql
    ... SQL Server MVP ... I need to get a list of file names from an Excel spreadsheet. ... > declared a cursor that uses opendatasourceto get the file names out ... > -- this will declare the cursor for the outer loop (that gets the file ...
    (microsoft.public.sqlserver.programming)
  • Re: Declare cursor problem in ISeries
    ... The cursor declaration is as follows: ... SQL statement is not allowed for one of the following reasons: ... DECLARE PROCEDURE, DESCRIBE, GET DIAGNOSTICS, SIGNAL, RESIGNAL, and ... The version information of Iseries is: ...
    (comp.sys.ibm.as400.misc)
  • =?ISO-8859-15?Q?Re=3A_kann_mir_jemand_den_Syntax_von?= =?ISO-8859-15?Q?=3A_DECLARE_C
    ... DECLARE a CHAR; ... DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1; ... OPEN cur1; ... FETCH cur1 INTO a, b; ...
    (de.comp.datenbanken.mysql)
  • Re: Declare cursor problem in ISeries
    ... When I try to declare the cursor in Iseries Run SQL scripts tool I get ...
    (comp.sys.ibm.as400.misc)
  • Re: MSDE OSQL Shutdown
    ... Hier helfen Bücher und die interne SQL HIlfe sehr gut weiter. ... DECLARE @backupdir nvarchar ... FROM master.dbo.sysdatabases ... FETCH NEXT FROM cur_dbbackup INTO @dbname ...
    (microsoft.public.de.sqlserver)