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
我的查询工作正常,但我希望能够在命令中添加一个日期值变量。
这是我目前的情况:
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