sql server怎么备份?

royiw 2003-12-12 10:37:50
比如说系统和硬盘完全损坏,没有恢复数据的可能,怎么样备份才能做到完全恢复?
...全文
53 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2003-12-12
  • 打赏
  • 举报
回复
/*--备份数据库

--邹建 2003.10--*/

/*--调用示例

--备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='\DBNAME\_\DATE\_db.bak'

--差异备份当前数据库
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_df.bak',@bktype='DF'

--备份当前数据库日志
exec p_backupdb @bkpath='c:\',@bkfname='db_\DATE\_log.bak',@bktype='LOG'

--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_backupdb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_backupdb]
GO

create proc p_backupdb
@dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
@appendfile bit=1 --追加/覆盖备份文件
as
declare @sql varchar(8000)
if isnull(@dbname,'')='' set @dbname=db_name()
if isnull(@bkpath,'')=''
begin
select @bkpath=rtrim(reverse(filename)) from master..sysfiles where name='master'
select @bkpath=substring(@bkpath,charindex('\',@bkpath)+1,4000)
,@bkpath=reverse(substring(@bkpath,charindex('\',@bkpath),4000))+'BACKUP\'
end
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
,'\DATE\',convert(varchar,getdate(),112))
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
+' to disk='''+@bkpath+@bkfname
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
exec(@sql)
go
zjcxc 元老 2003-12-12
  • 打赏
  • 举报
回复
企业管理器
--管理
--右键数据库维护计划
--新建维护计划
--<下一步>
--选择你要备份的数据库
--<下一步>直到"指定数据库备份计划"这项
--指定存储备份文件的位置,这里根据需要选择备分到磁带还是磁盘
--单击调度后面的"更改"按纽
--定义你的数据备份计划的时间安排,完成后确定
--<下一步>
--这里可以设置备份文件的保留时间和备文件的扩展名
--<下一步>
--选择是否做日志备份计划
--<下一步>直到完成.
zjcxc 元老 2003-12-12
  • 打赏
  • 举报
回复
备份,不但要在本机备份,还要备份到其他电脑或设备才安全.
pengdali 2003-12-12
  • 打赏
  • 举报
回复
或用日志:


Log Explorer

http://www.ttdown.com/SoftDown.asp?ID=14562
http://www.yiii.net/app/servlet/net.yiii.club.DownloadServlet?Information_Id=I00023471
解压缩密码 www.heibai.net

http://www.ttdown.com/softview_8647.htm


注册机产生的是注册码,是两个

用解压缩密码解开后,压缩包里也有一个注册机的

打开log explorer file=>attach log file->选择服务器和登陆方式->connect->
选择数据库->attach->左面对话框中browse->view log->就可以看到log记录了
想恢复的话: 右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行
T-sql代码就可以了

例如 如果log是delete table where ...的话,生成的文件代码就是insert table ....

右键log记录 undo transation->选择保存文件名和路径->然后打开该文件到查询分析器里执行T-sql代码

log explorer使用的一个问题


1)对数据库做了完全 差异 和日志备份
备份时选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时
提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才的记录了


如果不选用了删除事务日志中不活动的条目
再用Log explorer打试图看日志时,就能看到原来的日志

2)修改了其中一个表中的部分数据,此时用Log explorer看日志,可以作日志恢复

3)然后恢复备份,(注意:恢复是断开log explorer与数据库的连接,或连接到其他数据上,
否则会出现数据库正在使用无法恢复)
恢复完后,再打开log explorer 提示No log recorders found that match the filter,would you like to view unfiltered data
选择yes 就看不到刚才在2中修改的日志记录,所以无法做恢复

pengdali 2003-12-12
  • 打赏
  • 举报
回复
你手工的时候不是在备份对话筐里的下面有个“调度”吗?勾上它在后面选执行时间就可以了。

每天备份
lynx1111 2003-12-12
  • 打赏
  • 举报
回复
建议用维护计划备份:
企业管理器
--管理
--右键数据库维护计划
--新建维护计划
--<下一步>
--选择你要备份的数据库
--<下一步>直到"指定数据库备份计划"这项
--指定存储备份文件的位置,这里根据需要选择备分到磁带还是磁盘
--单击调度后面的"更改"按纽
--定义你的数据备份计划的时间安排,完成后确定
--<下一步>
--这里可以设置备份文件的保留时间和备文件的扩展名
--<下一步>
--选择是否做日志备份计划
--<下一步>直到完成.
lynx1111 2003-12-12
  • 打赏
  • 举报
回复
backup database sys to disk='c:\目录\a.bak'

把c:\目录\a.bak这个文件保存好
或者把F:\Program Files\Microsoft SQL Server\MSSQL\Data\TEST_Data.MDF文件保存好
就没事了
txlicenhe 2003-12-12
  • 打赏
  • 举报
回复
也可以用数据库文件来附加。

1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

royiw 2003-12-12
  • 打赏
  • 举报
回复
TO: cysh(cysh)我是为了防止硬盘损坏的事情出现,所以才要做备份!!
txlicenhe 2003-12-12
  • 打赏
  • 举报
回复
SQL SERVER自带的数据库是不是也应该做备份?
没必要。

txlicenhe 2003-12-12
  • 打赏
  • 举报
回复
1:企业管理器全向导操作
2:
http://expert.csdn.net/Expert/topic/2359/2359124.xml?temp=.4968531
数据库备份/恢复方案 邹建
royiw 2003-12-12
  • 打赏
  • 举报
回复
怎么样做备份文件,完全备份和其它备份都可以吗,有备份文件的话应该怎么恢复?SQL SERVER自带的数据库是不是也应该做备份?
cysh 2003-12-12
  • 打赏
  • 举报
回复
硬盘完全损坏就不能备份了吧
lynx1111 2003-12-12
  • 打赏
  • 举报
回复
有备份文件或者数据文件就可以恢复

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧