SQL服务器xp_cmdshell查询:向命令添加变量

SQL Server xp_cmdshell query: add variables to command

我的查询工作正常,但我希望能够在命令中添加一个日期值变量。

这是我目前的情况:

DECLARE @varDate DATE

SET @varDate = CAST(DATEADD(day, -1, GETDATE()) AS DATE)

EXEC master..xp_cmdshell 'SQLCMD -E -S "EMERALDSERVER\LASERFICHERIO" -s"," -W -Q "SET NOCOUNT ON EXEC PullSageData.[dbo].[Report_Daily_Superintendent_Jobs]" | findstr /V /C:"-" /B > C:\Laserfiche\import\Reports\Reports_"+@varDate+".csv'

@varDate所在的位置应该直接替换为昨天的日期。

示例文件名:

Reports_2018_10_31.csv

而是输出文件名:

Reports+@varDate+.csv

我的猜测是,在单引号内输入变量并不适用于双引号和 +,就像我在很多示例中看​​到的那样。

您必须创建一个包含所有内容的新变量并从中执行 示例:

declare @varDate date
SET @varDate=CAST(DATEADD(day,-1,GETDATE()) as date)
declare @Script varchar (max) = 'SQLCMD -E -S "EMERALDSERVER\LASERFICHERIO" -s"," -W -Q "SET NOCOUNT ON EXEC PullSageData.[dbo].[Report_Daily_Superintendent_Jobs]" | findstr /V /C:"-" /B > C:\Laserfiche\import\Reports\Reports_varDate.csv'
declare @cmd varchar(max)= replace(@Script,'@varDate',@varDate)
EXEC master..xp_cmdshell @cmd