我正在尝试运行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)
我收到了该错误消息.是否与正确声明字符串有关.
我添加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不会.