Man sollte keine Befehle mit xp_cmdshell ausführen, die irgendeine Interaktion mit dem Benutzer erwarten. Diese warten dann auf irgendwelche Aktionen seitens des Benutzer, die nicht stattfinden und scheinen sich *aufgehängt* zu haben.
Ein Bespiel hierfür ist:
exec master..xp_cmdshell 'time'
Hingegen liefert:
exec master..xp_cmdshell 'time/t'
output
---------------------
22:11
NULL
(2 row(s) affected)
gute Ergebnisse
Anmerkung 21.07.2004: Ralph Hüttenmoser hat einen Workaround aufgezeigt. Dabei wird der SQL Server Dienst angepasst. Aktiviert man auf dem Tab "Anmelden" das Lokale Systemkonto, kann man die Option "Datenaustausch zwischen Dienst und Desktop zulassen" aktivieren. Anschliessend übernehmen und den Dienst neu starten. Danach kann man folgendes ohne Probleme ausführen:
exec master..xp_cmdshell 'time'
output
------------------------------
Aktuelle Zeit: 14:31:36,82
Geben Sie die neue Zeit ein:
(2 row(s) affected)
Bevor man allerdings den Dienst so anpasst, sollte man in BOL nachlesen, was die Konsequenzen sind.