SQL Server Express 版本不具备 Agent 服务,所以无法实现定时备份功能。那有什么办法解决呢?
一、写 SQL 语句
declare @backupTime nvarchar(50) select @backupTime=convert(nvarchar(50), getdate(), 120) select @backupTime=replace(@backupTime, '-', '') select @backupTime=replace(@backupTime, ' ', '') select @backupTime=replace(@backupTime, ':', '') declare @fileName nvarchar(200) select @fileName='C:\SQLBackup\DbName_' + @backupTime + '.bak' backup database DbName to disk=@fileName
注意:SQL Server 并不会自动创建 SQLBackup 这个目录,需要我们预先人工创建,否则会出错。
二、创建批处理文件
将上述 SQL 语句保存为文件,比如叫 DbName.sql。
下面再创建一个批处理文件,保存为文件,比如叫:DbName.bat。
sqlcmd -S . -i C:\SQLBackup\DbName.sql
-S 后面的 . 表示本服务器(注意,如果不是默认实例,则需要加上实例名,比如:.\SQLExpress);-i 后面的参数表示输入文件,注意这个地方一定要用全路径,因为放到计划任务中去执行时,其执行路径并不是 .bat 的路径,所以相对路径就会出错。
三、定时执行批处理文件
在控件面板中,搜索“计划任务”,新建一个任务:
先是指定基本信息。
然后在触发器中指定执行频率。
然后在操作中执行之前的 .bat 文件。
四、注意权限
要让 SQL Server 运行帐户对备份目录有写入权限,这个 SQL Server 运行帐户可以通过 SQL Server 服务属性,或者在 Sql Server Configuration Manager中“登录身份为”查看。
相关阅读