Debuggen in Transact SQL, SQL 2005
Hallo,
ich durfte gerade einen MS SQL Server 2005 üebrnehmen und habe davon relativ wenig Ahnung.
Im Momen versuche ich einen Maintenance Plan hinzubekommen.
Ich möchte im Moment eigenlich nur einen Dateinamen einlesen und diesen weiterverwenden.
Da das nicht klappt, möchte ich mir irgendwie ausgeben lassen, was eingelesen wurde.
Ich habe es mit Print versucht, was zumindest keine Fehler erzeugt. Nur wohin wird die Ausgabe geprintet? Im Output Fenster kommt nichts.
Also habe ich es versucht in eine Textdatei schreiben zu lassen. Geht auch nich wirklich.
Hier mal mein Code:
DECLARE @dateiname CHAR(350), @aufruf CHAR(350)
EXEC @dateiname = xp_cmdshell 'dir D:\Pfad\Zur\Datei\*.bak /b'
set @aufruf = @dateiname + ' >> D:\Pfad\Zur\Datei\hallo.txt'
print @dateiname
EXEC xp_cmdshell @aufruf
Gibt es bei diesem tollen zusammenklicksystem von SQL 2005 nicht irgendwo einen anständigen Debugger bei dem man Breakpunkte setzen, den Code Schrittweise ausführen und die Variableninhalte zur Laufzeit anschauen kann?
ich durfte gerade einen MS SQL Server 2005 üebrnehmen und habe davon relativ wenig Ahnung.
Im Momen versuche ich einen Maintenance Plan hinzubekommen.
Ich möchte im Moment eigenlich nur einen Dateinamen einlesen und diesen weiterverwenden.
Da das nicht klappt, möchte ich mir irgendwie ausgeben lassen, was eingelesen wurde.
Ich habe es mit Print versucht, was zumindest keine Fehler erzeugt. Nur wohin wird die Ausgabe geprintet? Im Output Fenster kommt nichts.
Also habe ich es versucht in eine Textdatei schreiben zu lassen. Geht auch nich wirklich.
Hier mal mein Code:
DECLARE @dateiname CHAR(350), @aufruf CHAR(350)
EXEC @dateiname = xp_cmdshell 'dir D:\Pfad\Zur\Datei\*.bak /b'
set @aufruf = @dateiname + ' >> D:\Pfad\Zur\Datei\hallo.txt'
print @dateiname
EXEC xp_cmdshell @aufruf
Gibt es bei diesem tollen zusammenklicksystem von SQL 2005 nicht irgendwo einen anständigen Debugger bei dem man Breakpunkte setzen, den Code Schrittweise ausführen und die Variableninhalte zur Laufzeit anschauen kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160549
Url: https://administrator.de/contentid/160549
Ausgedruckt am: 19.11.2024 um 23:11 Uhr
1 Kommentar
Hallo 151kg,
einen anständigen Debugger im Bordwerkzeug vom SQL Server gibt es nicht. im Visual Studio kann man auch Prozeduren debuggen, aber so doll ist das nicht. Da bin ich mit print und select schneller.
Mit welchem Programm machst Du das Ganze denn? Im Management Studio bekommst Du im unteren Bereich die Ausgabe. Da gibt es möglicherweise auch mehrere Register, die print-Ausgabe ist im Register Meldungen.
Das Problem mit der Rückgabe von xp_cmdshell ist, daß da kein einzelner Text zurückgegeben wird, sondern eine Tabelle mit lauter Textzeilen. Das was in Deinem @dateiname landet, ist der Rückgabecode 0 oder 1, ob die Prozedur erfolgreich war oder nicht. Rückgaben von Prozeduren, die Tabellen zurückgeben bekommst Du folgendermaßen:
Gruß, Mad Max
einen anständigen Debugger im Bordwerkzeug vom SQL Server gibt es nicht. im Visual Studio kann man auch Prozeduren debuggen, aber so doll ist das nicht. Da bin ich mit print und select schneller.
Mit welchem Programm machst Du das Ganze denn? Im Management Studio bekommst Du im unteren Bereich die Ausgabe. Da gibt es möglicherweise auch mehrere Register, die print-Ausgabe ist im Register Meldungen.
Das Problem mit der Rückgabe von xp_cmdshell ist, daß da kein einzelner Text zurückgegeben wird, sondern eine Tabelle mit lauter Textzeilen. Das was in Deinem @dateiname landet, ist der Rückgabecode 0 oder 1, ob die Prozedur erfolgreich war oder nicht. Rückgaben von Prozeduren, die Tabellen zurückgeben bekommst Du folgendermaßen:
declare @tmp table (ausgabe varchar (max))
insert into @tmp exec xp_cmdshell 'dir D:\Pfad\Zur\Datei\*.bak /b'
select * from @tmp
Gruß, Mad Max