SqlServer 2008 r2 express的自动备份实现
2013-12-13 22:57
302 查看
在一个项目中用到的数据库是sqlserver 2008 r2 express 。可没想到express版本的功能有些限制,此前一直都不知道啊。百度百科可以看到它的限制:
“1.数据库的大小限制:SQL Server 2005 Express 和SQL Server 2008 Express 数据库的大小限制最大为 4GB,最新版本的SQL Server 2008 R2 Express 数据库的大小限制最大为 10G。这个大小的限制只有在数据文件上,交易记录档则不受此限。 2.只能使用一个 CPU 来运算,这在多个 CPU 的电脑上会造成浪费。
3.可使用的存储器量最高只有 1GB。
4.没有 SQL Agent,若要做调度服务必须自己写程序。”
所以,由于没有SQL代理(SQLSERVERAGENT)服务,就没有办法通过新建作业的方式来做数据库备份了。如果不想重装数据库的话可以试试以下方法。思路如下:
1、写一个sql 脚本来作数据库备份。
例如:backup.sql ,我们把它放在 F:\Database_Backup下,以后的备份文件也放在这个目录下。
[sql]
view plaincopyprint?
GO
DECLARE
@backupTime VARCHAR(20)
DECLARE
@fileName VARCHAR(1000)
SELECT
@backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5),
GETDATE(), 114), ':', ''))
SELECT
@fileName='F:\Database_Backup\DB_'+@backupTime+'.bak'
backup database DBName to disk=@fileName
2、写一个批处理文件,执行此sql脚本。
例如:backup_database.bat ,我们也把它放在F:\Database_Backup下。
[plain]
view plaincopyprint?
sqlcmd -S . -i F:\Database_Backup\backup.sql
3、新建一个Windows计划任务,定期(比如每天)执行此批处理命令。
选择管理工具里的“计划任务”
选择“创建基本任务”
输入任务名称和描述
选择执行时间
选择操作为“启动程序”
这里的程序或脚本就选择我们建好的backup_database.bat
最后确定即可。
至于删除过期的备份文件,我们也可以通过任务计划来完成。forfiles命令,可以实现批量删除文件,用法可以自行百度。我们写一个批处理文件delete_bakFile.bat,内容如下:
[plain]
view plaincopyprint?
forfiles /p F:\Database_Backup /m *.bak /d -7 /c "cmd /c del /f @path"
在这里,我们删除7天以前的备份,同样地新建一个任务计划,将它执行的程序指向这个bat 即可,执行时间可以指定为一个月一次或一周一次等。
“1.数据库的大小限制:SQL Server 2005 Express 和SQL Server 2008 Express 数据库的大小限制最大为 4GB,最新版本的SQL Server 2008 R2 Express 数据库的大小限制最大为 10G。这个大小的限制只有在数据文件上,交易记录档则不受此限。 2.只能使用一个 CPU 来运算,这在多个 CPU 的电脑上会造成浪费。
3.可使用的存储器量最高只有 1GB。
4.没有 SQL Agent,若要做调度服务必须自己写程序。”
所以,由于没有SQL代理(SQLSERVERAGENT)服务,就没有办法通过新建作业的方式来做数据库备份了。如果不想重装数据库的话可以试试以下方法。思路如下:
1、写一个sql 脚本来作数据库备份。
例如:backup.sql ,我们把它放在 F:\Database_Backup下,以后的备份文件也放在这个目录下。
[sql]
view plaincopyprint?
GO
DECLARE
@backupTime VARCHAR(20)
DECLARE
@fileName VARCHAR(1000)
SELECT
@backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5),
GETDATE(), 114), ':', ''))
SELECT
@fileName='F:\Database_Backup\DB_'+@backupTime+'.bak'
backup database DBName to disk=@fileName
GO DECLARE @backupTime VARCHAR(20) DECLARE @fileName VARCHAR(1000) SELECT @backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(CONVERT(VARCHAR(5), GETDATE(), 114), ':', '')) SELECT @fileName='F:\Database_Backup\DB_'+@backupTime+'.bak' backup database DBName to disk=@fileNameDBName就是你的数据库的名称了,备份的文件名形如 DB_201302252140.bak。
2、写一个批处理文件,执行此sql脚本。
例如:backup_database.bat ,我们也把它放在F:\Database_Backup下。
[plain]
view plaincopyprint?
sqlcmd -S . -i F:\Database_Backup\backup.sql
sqlcmd -S . -i F:\Database_Backup\backup.sql
3、新建一个Windows计划任务,定期(比如每天)执行此批处理命令。
选择管理工具里的“计划任务”
选择“创建基本任务”
输入任务名称和描述
选择执行时间
选择操作为“启动程序”
这里的程序或脚本就选择我们建好的backup_database.bat
最后确定即可。
至于删除过期的备份文件,我们也可以通过任务计划来完成。forfiles命令,可以实现批量删除文件,用法可以自行百度。我们写一个批处理文件delete_bakFile.bat,内容如下:
[plain]
view plaincopyprint?
forfiles /p F:\Database_Backup /m *.bak /d -7 /c "cmd /c del /f @path"
forfiles /p F:\Database_Backup /m *.bak /d -7 /c "cmd /c del /f @path"
在这里,我们删除7天以前的备份,同样地新建一个任务计划,将它执行的程序指向这个bat 即可,执行时间可以指定为一个月一次或一周一次等。
相关文章推荐
- SqlServer 2008 r2 express的自动备份实现
- SqlServer 2008 r2 express的自动备份实现
- 我自己的项目的sqlserver 2008 r2 express的自动备份的脚本
- SqlServer 2008 express的自动备份实现
- sql server 2008 R2 express 自动备份脚本
- Oracle 10g 每日自动备份(Windows Server 2008 R2 Datacenter)
- SqlServer 2008 R2定时备份数据库,并且发送邮件通知
- SqlServer 2008r2备份到共享磁盘
- SQLServer-----SQLServer 2008 R2备份、还原数据库
- 使用SQL Server 2008维护计划实现数据库定时自动备份
- sql server 2008express 数据库自动备份方法
- [总结]SqlServer中如何实现自动备份数据!
- Windows server 2008 R2 自动备份数据库定时任务运行后数据库未备份问题
- Windows 2008 R2 做RMAN定时自动备份;日期格式影响日志文件生成
- SQL Server 2008 / 2008 R2 定期自动备份数据库,除了在维护计划内添加计划,还有这种方式
- SqlServer之作业实现定时自动备份
- sqlserver 2008 R2备份脚本
- SQLServer 2008 数据库自动备份
- SqlServer 2008 R2定时备份数据库,并且发送邮件通知
- 转 SqlServer中如何实现自动备份数据!