Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem: xp_cmdshell erzeugt Rollback im Trigger

Empfohlene Antworten

Veröffentlicht

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

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 :)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.