我如何在批处理文件中使用 sql 脚本变量
How can i use sql script variable in a batch file
我有一个 "SQL script",它在本地硬盘驱动器上备份数据库,文件名备份中包含当前日期,例如:
DECLARE @backuppath varchar(1000)
SELECT @backuppath = (SELECT 'C:\abat\delta_c_' + convert(varchar(500),GetDate(),112.bak')
BACKUP DATABASE [TEST_2] TO DISK=@backuppath
我还有一个批处理文件,运行 并执行我的 "SQL script"。
示例:
@echo
sqlcmd -S .\SQLEXPRESS -i "c:\abat\myscript.sql"
if exist "C:\abat\@backuppath"(
Forfiles -p "C:\abat" -s -m *.BAK -d -7 -c "cmd /c del /q @path"
) else (
rem file doesn't exist
)
pause
我如何在批处理文件中使用 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 DISK=@backuppath;
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
我有一个 "SQL script",它在本地硬盘驱动器上备份数据库,文件名备份中包含当前日期,例如:
DECLARE @backuppath varchar(1000)
SELECT @backuppath = (SELECT 'C:\abat\delta_c_' + convert(varchar(500),GetDate(),112.bak')
BACKUP DATABASE [TEST_2] TO DISK=@backuppath
我还有一个批处理文件,运行 并执行我的 "SQL script"。 示例:
@echo
sqlcmd -S .\SQLEXPRESS -i "c:\abat\myscript.sql"
if exist "C:\abat\@backuppath"(
Forfiles -p "C:\abat" -s -m *.BAK -d -7 -c "cmd /c del /q @path"
) else (
rem file doesn't exist
)
pause
我如何在批处理文件中使用 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 DISK=@backuppath;
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