我正在使用这个批处理文件备份我的sql server中的所有数据库,除了sql server附带的数据库,
@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任务调度程序以管理员权限运行,但我没有在指定的文件夹中获得任何备份。我不知道我在这里做错了什么。我对这些东西很新,如果有人知道那么请指导我,谢谢。
答案 0 :(得分:2)
我会使用像Editplus这样的文本编辑器,或者,如果必须,我会使用记事本 - 而不是WP来生成批处理文件。
批处理不理解“..” - 它需要“ - 同样适用于单引号。
此外,您没有指定the specified folder
的意思。您的路径名为relative
,因此您选择相对于当前目录的MY-PC\SQLEXPRESS
。您可以使用cd "c:\desired\directory\name"
语句设置当前目录,也可以使用绝对路径(来自drive-root)。但请使用propoer类型的引号。
答案 1 :(得分:2)
您可以从https://ola.hallengren.com/获取备份脚本来备份SQL Express数据库上的数据库。使用SQL Management Studio提到了mark_s,我同意这使我更容易管理SQL Express。
如果您选择使用Ola Hallengren的脚本,您基本上运行从主页面下载的安装脚本。然后查看“DatabaseBackup”页面(从主页链接)。大约一半的页面是一个应该清除如何使用查询的示例列表。