Zum Inhalt springen

Problem: xp_cmdshell erzeugt Rollback im Trigger


Varrius

Empfohlene Beiträge

Hallo allesamt,

ich arbeite mit SQL2005 und habe einen Trigger erstellt, welcher nach einem Insert ausgeführt wird. In diesem Trigger werden Daten aus dem neuen Datensatz ausgelesen und sollen in eine XML Datei geschrieben werden. Da ich hier keinen Ansatz hatte, habe ich erst einen String erstellt in dem sozusagen das InnerXML aufgebaut ist ;)

Am Ende des Triggers führe ich 2 xp_cmdshells aus, wobei die 2te dann leider dafür sorgt, das ein Rollback veranlaßt wird. (Ist zumindest meine Vermutung, da ohne diese xp_cmdshell die Daten danach noch in der DB enthalten sind.)

Hier mal die 2 Befehle der Anschaulichkeit ein wenig modifiziert :)


SET @befehl = 'echo "|<account>< ...   ></account>|" > c:\data.txt

EXEC @befehl

SET = 'for /f "tokens=2 delims=|" %i in (c:\data.txt) do echo %i > c:\new_account.xml'

EXEC @befehl2

Wenn der Trigger so ausgeführt wird, sind die Daten danach nicht mehr in der Datenbank, die XML erhalte ich aber, soweit funktioniert das also sicher. Wenn das 2te xp_cmdshell auskommentiert wird, sind die Daten in der DB und die TXT Datei ist auch erstellt worden.

Hat vielleicht jemand eine Idee was da falsch ist oder eine andere Möglichkeit die Daten zu bekommen?

Vielen Dank,

Varrius

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab mir ein kleines Workaround gebastelt, bestehend aus einer .bat die den 2ten xp_cmdshell Befehl enthält. Natürlich wurde die Variable zu %%i verändert und es muss ein "@echo off" vor dem Befehl stehen, da der SQL Server den Return sonst wieder erhalten würde und das wohl einen Fehler verursacht hat.

Das 2te xp_cmdshell ruft nun die .bat auf und meine Daten bleiben in der DB bestehen.

Falls jemand eine bessere Methode kennt, gerne her damit :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...