Windows 批处理文件备份 sql 数据库
Windows batch file to backup sql database
我正在使用这个批处理文件备份 sql 服务器中的所有数据库,sql 服务器随附的数据库除外,
@ECHO OFF
SETLOCAL
REM Get date in format YYYY-MM-DD (assumes the locale is the United States)
FOR /F “tokens=1,2,3,4 delims=/ ” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C
REM Build a list of databases to backup
SET DBList=%SystemDrive%SQLDBList.txt
SqlCmd -E -S MY-PC\SQLEXPRESS -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”
REM Backup each database, prepending the date to the filename
FOR /F “tokens=*” %%I IN (%DBList%) DO (
ECHO Backing up database: %%I
SqlCmd -E -S MY-PC\SQLEXPRESS -Q “BACKUP DATABASE [%%I] TO Disk=’D:\SQLdata\Backup\%NowDate%_%%I.bak'”
ECHO.
)
REM Clean up the temp file
IF EXIST “%DBList%” DEL /F /Q “%DBList%”
ENDLOCAL
我通过查询获得了服务器名称 - SELECT @@SERVERNAME
以防万一,路径完全相同。
我有 运行 手动和通过 windows 具有管理员权限的任务计划程序,但我没有在指定的文件夹中获得任何备份。我不知道我在这里做错了什么。我对这东西很陌生,请知道的人指导我,谢谢。
我会使用像 Editplus 这样的文本编辑器,或者,如果必须的话,记事本——而不是 WP 来生成批处理文件。
批处理不理解“..” - 它需要 " - 单引号也是如此。
此外,您没有具体说明 the specified folder
的意思。您的路径名是 relative
因此例如您选择相对于当前目录的 MY-PC\SQLEXPRESS
。您可以使用 cd "c:\desired\directory\name"
语句设置当前目录,也可以使用绝对路径(从驱动器根目录)。但是请使用正确的引号。
您可以从 https://ola.hallengren.com/ 获取备份脚本来备份 SQL Express 数据库上的数据库。 mark_s 提到使用 SQL Management Studio,我同意这让我更容易管理 SQL Express。
如果您选择使用来自 Ola Hallengren 的脚本,您基本上 运行 从主页下载的安装脚本。然后查看 'DatabaseBackup' 页面(从主页链接)。页面的一半左右是一个示例列表,应该清楚如何使用查询。
我正在使用这个批处理文件备份 sql 服务器中的所有数据库,sql 服务器随附的数据库除外,
@ECHO OFF
SETLOCAL
REM Get date in format YYYY-MM-DD (assumes the locale is the United States)
FOR /F “tokens=1,2,3,4 delims=/ ” %%A IN (‘Date /T’) DO SET NowDate=%%D-%%B-%%C
REM Build a list of databases to backup
SET DBList=%SystemDrive%SQLDBList.txt
SqlCmd -E -S MY-PC\SQLEXPRESS -h-1 -W -Q “SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)” > “%DBList%”
REM Backup each database, prepending the date to the filename
FOR /F “tokens=*” %%I IN (%DBList%) DO (
ECHO Backing up database: %%I
SqlCmd -E -S MY-PC\SQLEXPRESS -Q “BACKUP DATABASE [%%I] TO Disk=’D:\SQLdata\Backup\%NowDate%_%%I.bak'”
ECHO.
)
REM Clean up the temp file
IF EXIST “%DBList%” DEL /F /Q “%DBList%”
ENDLOCAL
我通过查询获得了服务器名称 - SELECT @@SERVERNAME
以防万一,路径完全相同。
我有 运行 手动和通过 windows 具有管理员权限的任务计划程序,但我没有在指定的文件夹中获得任何备份。我不知道我在这里做错了什么。我对这东西很陌生,请知道的人指导我,谢谢。
我会使用像 Editplus 这样的文本编辑器,或者,如果必须的话,记事本——而不是 WP 来生成批处理文件。
批处理不理解“..” - 它需要 " - 单引号也是如此。
此外,您没有具体说明 the specified folder
的意思。您的路径名是 relative
因此例如您选择相对于当前目录的 MY-PC\SQLEXPRESS
。您可以使用 cd "c:\desired\directory\name"
语句设置当前目录,也可以使用绝对路径(从驱动器根目录)。但是请使用正确的引号。
您可以从 https://ola.hallengren.com/ 获取备份脚本来备份 SQL Express 数据库上的数据库。 mark_s 提到使用 SQL Management Studio,我同意这让我更容易管理 SQL Express。
如果您选择使用来自 Ola Hallengren 的脚本,您基本上 运行 从主页下载的安装脚本。然后查看 'DatabaseBackup' 页面(从主页链接)。页面的一半左右是一个示例列表,应该清楚如何使用查询。