Umstellung MS SQL Job von 2005 auf 2008

Claudine

Neuer Benutzer
Beiträge
4
Hallo Zusammen,

im Rahmen einer Datenbankmigration habe ich das Problem, dass in einem Job Tabellen gefüllt werden sollen (mit Hilfe eines Cursors)- siehe Code Beispiel vom MS SQL Servers 2005 auf den MS SQL Server 2008. dieser Job läuft auf dem alten System max. 20 min. Nach Übernahme auf den neuen Server dauert er länger als 12 Stunden. Trotzdem die Tabellen 1:1 übernommen wurden, sehen die Ablaufpläne unterschiedlich aus.

Weiß hier jemand, wie man das anpassen/ändern kann ?

Beste Grüße
Code:
DECLARE @V_CR_Number char(11);

DECLARE @V_CR_Subnumber char(4);

DECLARE @V_Count int;

DECLARE @V_n Int -- Org_ID


-- CR

DELETE [OSW].[tbl_CR_Involvement_Analysis_Test]



set @V_n = 0


DECLARE curCR_OSW_Involvement CURSOR

FORWARD_ONLY

FORselect CR_Number, CR_Subnumber from DWH.tbl_CR ORDER BY CR_Number, CR_Subnumber;


OPEN curCR_OSW_Involvement;

FETCH NEXT FROM curCR_OSW_Involvement

INTO @V_CR_Number, @V_CR_Subnumber;

WHILE@@FETCH_STATUS = 0

BEGIN

  set @V_n = 0


  WHILE @V_n < 120 -- zur Zeit Org_ID  1 bis 53

  BEGIN 

    set @V_n = @V_n + 1;


    SELECT @V_Count = COUNT(*) FROM [OSW].[tbl_CR_Involvement_Analysis] WHERE

                  [CR_Number] = @V_CR_Number AND [CR_Subnumber] = @V_CR_Subnumber

                  AND [Org_ID] = @V_n;

    IF @V_Count = 0

    BEGIN

      INSERT INTO [OSW].[tbl_CR_Involvement_Analysis_Test]

               ([active]

               ,[CR_Number]

               ,[CR_Subnumber]

               ,[Org_ID]

               ,[Ins_Date]

               ,[Ins_User])

      VALUES(1, @V_CR_Number, @V_CR_Subnumber, @V_n, GETDATE(), 'Script')

    END

  END


  FETCH NEXT FROM curCR_OSW_Involvement

  INTO @V_CR_Number, @V_CR_Subnumber;

END;

DEALLOCATE curCR_OSW_Involvement;
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.409
Ich würde mal vermuten das deine alte Tabelle [OSW].[tbl_CR_Involvement_Analysis] oder
DWH.tbl_CR diverse Indexe gesetzt hatte die auf dem neuen System fehlen. Ich würde auserdem vermuten das sich die Logik mit einem Cursor der Schleifen aufruft vermutlich irgendwie besser abbilden läßt, dazu fehlt mir allerdings das Verständnis für die Daten.
 

Claudine

Neuer Benutzer
Beiträge
4
Hi Ukulele,
leider falsch :-(
Alle Tabellen haben die gleichen Indexe.:( aus der DWH.tbl_CR kommen neue CR-Nummern, welche es in der [OSW].[tbl_CR_Involvement_Analysis] noch nicht gibt. Diese werden in die [OSW].[tbl_CR_Involvement_Analysis_Test] eingefügt und bekommen dort derzeit 53 Org IDs zugewiesen.
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.409
Theoretisch kann es durch die Änderung der SQL Version passieren das die Performance sich negativ verändert. Wenn du dem wirklich nachgehen willst würde ich allerdings erst die Hardware und die Installation ausschließen und das nochmal frisch installieren (auch unter SQL 2005) um das Problem zu reproduzieren. Ist der Unterschied auf gleicher Hardware mit frisch installiertem 2005 und 2008 reproduzierbar? Dann müsste man eventuell kostenpflichtigen MS Support in Anspruch nehmen...

Oder man denkt sich eine optimalere Anweisung ohne Schleife in Cursor aus, meist verbessert das viel mehr :)
 
Oben