如何使用SQL脚本变量在批处理文件
我有一个“SQL脚本”,在文件名备份当前的日期,例如本地硬盘上的备份数据库:如何使用SQL脚本变量在批处理文件
DECLARE @backuppath VARCHAR(1000 )
SELECT @backuppath =(SELECT 'C:\ ABAT \ delta_c_' +转换(VARCHAR(500),GETDATE(),112.bak')
BACKUP DATABASE [TEST_2] TO DISK = @ backuppath
另外我有一个批处理文件,它运行并执行我的“SQL脚本”。 例如:
@echo
SQLCMD -S \ SQLEXPRESS -i “C:\ ABAT \ myscript.sql”。
如果存在 “C:\ ABAT \ @backuppath”(
FORFILES -p “C:\ ABAT” -s -m * .BAK -d -7 -c “CMD/C德尔/ q @path”
)否则(
REM文件不存在
)
暂停
如何使用SQL脚本变量@backuppath在批处理文件来验证当前日期成功创建备份文件和执行下一个条件 “FORFILES”
修改您的SQL脚本:
set nocount on
DECLARE @backuppath varchar(1000);
SELECT @backuppath = (SELECT 'C:\abat\delta_c_' + convert(varchar(500),GetDate(),112.bak');
BACKUP DATABASE [TEST_2] TO [email protected];
select @backuppath;
和你的批处理脚本。我不知道你的逻辑,但变化应该至少检索@backuppath
@echo OFF
setlocal
for /f "delims=" %%A in (
'sqlcmd -S .\SQLEXPRESS -h-1 -i "c:\abat\myscript.sql"'
) do set "@backupPath=%%A"
if exist "%@backupPath%" (
Forfiles -p "C:\abat" -s -m *.BAK -d -7 -c "cmd /c del /q @path"
) else (
rem file doesn't exist
)
pause
我喜欢你的答案,谢谢。 –
工作,当我删除“delims =”parametr –
的价值。如果你让你的SQL脚本,你可以[捕捉,使用在_STDOUT_返回'@ backuppath'值' for/F'循环](http://stackoverflow.com/q/14646575)... – aschipfl