在SQL Server中声明引用字符串

Rus*_*hah 1 sql sql-server

我正在尝试运行SQL命令,但我收到错误消息" 非有效标识符".

如果我使用此命令,

EXEC xp_cmdshell N'mkdir C:\Users\PC\Desktop\Backup\1042012'
GO
Run Code Online (Sandbox Code Playgroud)

然后这个命令正常工作

但是,如果我使用此命令

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
Run Code Online (Sandbox Code Playgroud)

我收到了该错误消息.是否与正确声明字符串有关.

Tim*_*ner 7

我添加EXEC了一个unicode标识符(N)和单引号代替双引号.请告诉我们这是如何工作的.

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
Run Code Online (Sandbox Code Playgroud)

UPDATE

测试显示需要将日期格式化为yyyymmdd(其他可用格式)以及EXEC一直括号括起来(感谢@Lamak).这给了我们以下目录:

C:\Users\PC\Desktop\Backup\20121004
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我不推荐此日期格式,因为它会按字母顺序排序在文件系统中的时间顺序,而mmddyyyy还是ddmmyyyy不会.