Min ms sql trigger vil ikke flytte data fra tabel1 til tabel2, da insert i tabel1 bliver kørt via DTS. Hvorfor ??? Hvis jeg inserter i tabel1 enkeltvis, så fungerer triggeren.
Er det ikke noget med en wait funktion i DTS designeren !!
Kan problemet være at der oprettes flere rækker på een gang i tabellen? Såfremt der oprettes flere rækker på een gang i tabellen, vil din trigger kun reagere på den sidste række i INSERTED tabellen. Om du skal håndtere alle række i INSERTED, skal du løbe igennem INSERTED tabellen og håndtere hver enkelt række. F.eks. med:
SELECT @Nummer = 0 WHILE 1 = 1 BEGIN SELECT @Nummer = MIN(Nummer) FROM INSERTED WHERE Nummer > @Nummer
IF @Nummer IS NULL BREAK
SELECT {felter} FROM INSERTED WHERE Nummer = @Nummer END
Ja jeg ved "Wait for trigger" funktionen er der, men jeg får den ikke at fungere. Måske for "Message Queue" dims ikke er installeret på serveren, eller noget andet...
Jeg kan ikke gennemskue herfra hvad der er galt. Der findes måske en work-around med en stored procedure der udfører det arbejde som triggeren skulle have lavet?
SELECT @Nummer = 0 WHILE 1 = 1 BEGIN SELECT @Nummer = MIN(Nummer) FROM INSERTED WHERE Nummer > @Nummer
IF @Nummer IS NULL BREAK
SELECT @Nummer = Nummer, @Navn = Navn, @Adresse = Adresse, @Adresse2 = Adresse2, @Postnr = Postnr, @City = City, @Telefon = Telefon, @Telefax = Telefax, @DebitorGruppe = DebitorGruppe, @Spærret = Spærret FROM INSERTED WHERE Nummer = @Nummer
IF NOT EXISTS(SELECT CustomerID FROM tCustomer_tmp WHERE CustomerID = @Nummer) BEGIN INSERT INTO tCustomer_tmp (CustomerID,sName,sAddress,sAddress2,sPostalNumber,sCity,sTel,sFax,sDebitorGroup,sBlocked) VALUES (@Nummer,@Navn,@Adresse,@Adresse2,@Postnr,@City,@Telefon,@Telefax,@DebitorGruppe,@Spærret) END END
Det her går ikke fordi at du har ikke adgang til INSERTED udenfor en trigger.
Kan du ikke fortælle mig hvad det er du har tænkt dig at lave med DTS og så kan der måske være en anden løsning på det her. F.eks. om du importerer data, så kan data importeres i en tredje tabel først, for derefter at blive overført til tabel1 med en sp. Dvs. process 1 er import til tabel0, process 2 er en sp der flytter data fra tabel0 til tabel1/tabel2.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.