数据库备份是开发中很重要的一环,对于重要的数据,需要进行定时备份,对于临时进行的高危更新操作,需要备份表,防止类似于delete from table 忘记加where条件指定范围而把整张表删除的情况。在软件开发中,定时备份是一个好习惯,不用依赖于日志还原,依赖日志还原的方法比较复杂,花费的时间比较多。
1.sql复制表备份
这种备份用临时表的方法进行备份,快捷方便,不过需要手动维护。
if exists object_id("backName") then
drop table backname
select * into backName from tableName
--把tableName表的数据备份到backName中
这个sql语句通过判断backName是否存在,不存在时会先在数据库中建一个backname的表,然后将数据从tablename表中导入到backname中。
2.SQLServer Management导出文件备份表
这种情况可以不在原数据库上新建表,而是通过把数据导出成文件的方式备份。
(1).在窗口执行语句:select * from tableName
(2).查询出来的结果,直接在查询结果框全选右击 -》将结果另存为.txt文件或者.csv文件
(3)导入时可以利用数据库向导-单击数据库右键》任务-》导出数据-》平面文件源...>然后自己编辑映射导入。
3.sql对数据库的备份
backup database TBC2016 to disk='d:\TBC2016_Backup.bak'
--其中TBC2016为你要备份的数据库的名字
--TBC2016_Backup.bak前缀可以任意,后缀为.bak就ok
备份成功如下图显示:
这时在你设定的目录下可以看到备份的文件。
另外:如果你连的是服务器的数据库,你必须要在服务器的磁盘里找这个文件。
如果你设定的路径文件目录不存在,会出现消息 3201(系统找不到指定的路径。)
之前我就是因为操作的不是本地的数据库,所以明明创建了文件目录却一直报3201的错误。。。
4.SQLServer Management定时备份作业
(1)创建SQL Server代理作业
(1.1)新建作业,输出常规信息
如上图:输入作业名称(如:BackupJobTest),这里所有者和类别都是默认的,输入说明(就跟写代码要写注释一样,利人利己)
(1.2)设置作业执行步骤
点击左边“选择页”中的步骤属性选项卡,点击“新建”按钮
作业步骤属性窗口中,类型选择(T-SQL),选择要备份的数据库,并粘贴上调试好的SQL 备份脚本,由于我也是第一次写,贴一段示例在这里,读者可以自行参考修改:
--将SQL脚本赋值给变量
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE YourDataBaseName TO DISK = ''E:\DBBackup\YourDataBaseName-'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
--备份文件格式:YourDataBaseName-20140626233410.bak
print @SqlBackupDataBase --打印出来(为了方便调试,可省略)
exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL
注:CONVERT()函数的第三个参数是时间样式ID;用REPLACE()函数替换掉了时间中的冒号(因为Windows中文件名不能包含该字符)
(1.3)设置作业执行计划
在计划选项卡中,点击“新建”按钮新建计划:
设置完成后,点击”确定“按钮,另外三个属性“警报”、“通知”、“目标”如果需要可以自行设置,这里不再讲述。
完成计划设置后,点击上级的“确定”按钮,作业就创建完成了。
(2)手动验证作业执行的正确性
右键单击作业节点下刚建立的作业(图中的“BackupJobTest”),选择‘作业开始步骤(T)’
执行结果如下,表示成功:
点击“查看历史记录(V)”,可查看日志:
只要有了备份文件,就不用费劲心思从日志还原了。