Deklarieren Sie characterfolge in Anführungszeichen in SQL server

Ich versuche, einen SQL-Befehl auszuführen, aber ich bekomme eine Fehlermeldung von Not a Valid Identifier .

Wenn ich diesen Befehl verwende,

EXEC xp_cmdshell N'mkdir C:\Users\PC\Desktop\Backup\1042012' GO 

dann funktioniert dieser Befehl ordnungsgemäß

Aber wenn ich diesen Befehl verwende

 DECLARE @CurrentDate varchar(50) DECLARE @Path varchar(200) DECLARE @Command varchar(200) SET @CurrentDate = GETDATE() SET @Path = N'C:\Users\PC\Desktop\Backup' SET @Command = N'xp_cmdshell " ' + 'MKDIR' + ' '+ @Path + '\' + @CurrentDate + '" ' EXEC @Command GO 

Ich bekomme diese Fehlermeldung. Ist etwas damit zu tun, einen String richtig zu deklarieren oder nicht.

Ich denke das: ist in den Verzeichnisnamen nicht erlaubt, ich habe es in einen String konvertiert, aber es hat nicht die time darauf:

 DECLARE @CurrentDate varchar(50) DECLARE @Path varchar(200) DECLARE @Command varchar(200) SET @CurrentDate = CONVERT(VARCHAR(20), GETDATE(), 110) SET @Path = N'C:\Users\PC\Desktop\Backup' SET @Command = 'MKDIR' + ' '+ @Path + '\' + @CurrentDate PRINT @Command EXEC xp_cmdshell @Command 

Ich habe EXEC , eine Unicode-ID ( N ) und einfache Anführungszeichen anstelle von Ihrem Doppel-Anführungszeichen hinzugefügt. Bitte lassen Sie uns wissen, wie das funktioniert.

 DECLARE @CurrentDate varchar(50) DECLARE @Path varchar(200) DECLARE @Command varchar(200) SET @CurrentDate = convert(varchar(30), GETDATE(), 112) SET @Path = N'C:\Users\PC\Desktop\Backup' SET @Command = N'EXEC xp_cmdshell N''' + 'MKDIR' + ' '+ @Path + '\' + @CurrentDate + '''' EXEC (@Command) GO 

AKTUALISIEREN

Testing enthüllte die Notwendigkeit für die Formatierung des dates zu yyyymmdd ( andere Formate verfügbar ) und auch Klammern um EXEC wie immer (Danke, @Lamak). Das gibt uns heute folgendes Verzeichnis:

 C:\Users\PC\Desktop\Backup\20121004 

Abgesehen davon, ich empfehle dieses datesformat, wie es alphabetisch in chronologischer Reihenfolge in Ihrem filesystem sortieren wird, während mmddyyyy oder ddmmyyyy nicht.