Ich versuche, einige Daten und feste Zeichen aus einer SQL Server-Tabelle in eine Textdatei zu exportieren. Ich brauche eine große Anzahl solcher Zeilen, die in die Textdatei exportiert werden, so dass ich versuche, eine große Anzahl von Befehlsvariablen zu deklarieren und zu setzen, indem ich sie in eine Zeile setze (das wird die Code-Größe enorm reduzieren). Hier ist, was ich zu tun versucht:xp_cmdshell und echo in sql server trigger
Dies funktioniert:
DECLARE @ClientID varchar(50)
SET @ClientID = (select ClientID from inserted)
DECLARE @CommandL1 varchar(512)
SET @CommandL1 = 'echo U1 '[email protected]+'> c:\temp\file.txt'
exec master..xp_cmdshell @CommandL1
Der exakt gleiche Befehl wie oben, jedoch als eine Zeile geschrieben (ohne DECLARE und SET, bevorzugter Weg zu gehen, den Code zu reduzieren) ausfällt (ich erhalte den Fehler - falsche Syntax in der Nähe von (ersten) ‚+‘):
exec master..xp_cmdshell 'echo U1 '[email protected]+'> c:\temp\file.txt' --ERROR
ich eine Menge Code habe ähnlich wie oben, so auf den Linien sparen möchte. Außerdem würde ich gerne wissen, wie man dieses Problem löst. Vielen Dank für jede Hilfe im Voraus (Ich habe versucht^als Escape-Zeichen, aber keinen Erfolg). Wie ändert man die zweite Zeile (oben gezeigt mit --ERROR), damit es richtig funktioniert?
Jd
Was ist die ClientID? Außerdem, ich denke, Sie haben eine zusätzliche 'in Ihrer ersten Anweisung, die Einstellung von @ CommandL1 – scsimon
Ich bekomme ClientID als SET @ClientID = (wählen Sie ClientID von eingefügt); Dieser Teil funktioniert gut und nach dem Einfügen/Aktualisieren der Tabelle wird die korrekte ClientID mit der ersten Methode in die Textdatei exportiert. Du hattest vollkommen Recht mit Extra '- ich habe es jetzt bearbeitet. Danke für deine Antwort. – Jay
Also 'ClientID' ist ein' INTEGER' oder ist es ein 'VARCHAR'? Sind Sie sicher, dass nur 1 Zeile (record/value) in Ihrer Subselect '(wählen Sie ClientID von eingefügt)'? – scsimon