今天极度不爽,散分散分。

97866 2003-08-18 04:14:14
在CSDN上昏头晕脑地逛了几个月,都不知自己在做什么。今天的心情特别的不爽。



散分!散分...............



见者有分,保证每人不低于5分,不够分再加。决不食言。
...全文
107 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
97866 2003-09-15
  • 打赏
  • 举报
回复
数据库的备份与恢复


作者:刘利强 来源:中国电脑教育报 加入时间:2002-12-11 99软件站

随着信息时代和互联网技术的飞速发展,企业的信息数据量也急剧增长。如何避免突如其来的数据破坏(如:黑客攻击、病毒袭击、硬件故障和人为误操作等),提高数据的安全性和数据恢复能力一直是用户和厂商关注的焦点。备份是恢复数据最容易和最有效的保证方法,备份应定期进行,并执行有效的数据管理。

  Microsoft公司的SQL Server是一个功能完善的数据库管理系统,由于和Windows操作系统无缝结合,操作简便易行,应用十分广泛。下面来看一看基于NT的SQL Server 7.0的备份与数据恢复的有效方法。

  针对服务器系统

  由于数据库服务器中安装的系统较多,设置复杂,如出现硬件故障,则必须重装系统,恢复设置,因此有必要对数据库服务器进行备份。

  1、使用NT Server提供的功能

  在防止数据丢失方面,NT的磁盘管理器具有强大的功能,它支持RAID的第0、1、5级。其中RAID 1级是指把一个驱动器上的某一分区在另一个上建立一个镜像。进行写操作时,数据将向两个磁盘中写入同样的数据,读取时可以从两个磁盘同时读取。当驱动器损坏时,由它的镜像来进行恢复。

  2、使用第三方备份工具

  采用其他公司的备份软件来对服务器系统做备份。笔者常用的是Norton公司的磁盘备份工具——Ghost。该软件可以直接将磁盘上的某个分区或整个硬盘克隆成一个镜像文件,然后把它存放在别处,那么当该分区或硬盘出现问题甚至毁坏时,使用Ghost在另一硬盘或分区上,利用镜像文件快速还原。

  针对SQL Server

  1、在本地机上进行数据库备份

  先确认SQL Server服务是否已经启动,如果没有启动,则使用SQL Server 7.0程序菜单中的“SQL Server Service Manager”进行启动,然后打开 “Enterprise Manager”,展开左边的SQL Server Group,展开SQL Server中的“Databases”,单击右键,在菜单中选择“所有任务”选项中的“Backup Database”子选项,出现如图1的数据库备份画面。



图1


  选好要备份的数据库及备份方式后,单击[Add]按钮,在对话框中设置好存放目录及文件名,单击[OK]按钮。如果要设置定期自动备份,可在“Schedule”中设置,完毕后,单击[确定]按钮,数据库备份就开始执行了。

  2、在本地机上进行数据库恢复

  启动“Enterprise Manager”,展开其中的选项,选择“Databases”,单击右键,在对话框中选择“所有任务”选项中的“Restore Database”(如图2)。



图2


  单击[Select Devices]按钮,选择要恢复的数据库文件。选择完毕后,“Backup Number”选项将会变亮,选择最近的一次备份。然后单击[确定],数据库恢复过程开始执行。

  3、将数据库导出到网络上的另一台计算机上进行备份与恢复

  先在网络上的另一台计算机上安装一个新的SQL Server,并启动它建立好数据库结构。然后在本机上启动“Enterprise Manager”,在左边的目录栏中选中“SQL Server Group”,单击右键,在对话框中选择“New SQL Server Registration”,进入注册向导,输入目标SQL Server的计算机名后,填写登录ID和密码,将目标SQL Server注册在本机的“SQL Server Group”中。然后选择“Databases”中需要备份的数据库标志,单击右键,在对话框选择“所有任务”中的“Export Data...”选项。在弹出“Date Transfer Services Export Wizard”的界面后,单击[下一步]按钮,选择需要备份的数据库,接着单击[下一步]按钮,选择目标服务器,选择SQL Server验证模式,填写用户名和密码,在“Database”一项中输入新的数据库名称(如图3),单击[下一步]按钮,进入导出方式的界面,设置好之后,单击[下一步]按钮,在下面的步骤中一般选择默认选项,可以顺利完成数据库的导出操作了。



图3


  两个SQL Server中具有相同的数据库,当原来的数据库崩溃后,就可以直接启用另一个,只是修改一下计算机上ODBC数据源中所设置的SQL Server主机名称。

97866 2003-09-15
  • 打赏
  • 举报
回复
当SQL Server数据库崩溃时如何恢复?


作者:怡红公子 来源:开发者俱乐部 加入时间:2002-12-11 99软件站

工作告一段落,今天下午有空,写篇文章,也许会对大家有帮助:)

任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备……仍然无法完全根除系统中的单点故障,何况对于大部分用户来说,无法承受这样昂贵的硬件投资。所以,在系统崩溃的时候,如何恢复原有的宝贵数据就成为一个极其重要的问题了。

在恢复的时候,最理想的情况就是你的数据文件和日志文件都完好无损了,这样只需要sp_attach_db,把数据文件附加到新的数据库上即可,或者在停机的时候把所有数据文件(一定要有master等)都copy到原有路径下也行,不过一般不推荐这样的做法,sp_attach_db比较好,虽然麻烦许多。

但是呢,一般数据库崩溃的时候系统是未必能有时间把未完成的事务和脏页等写入磁盘的,这样的情况sp_attach_db就会失败。那么,寄期望于DBA制定了一个良好的灾难恢复计划吧。按照你的恢复计划,还原最新的完全备份,增量备份或者事务日志备份,然后如果你的活动事务日志还能读得出来的话,恭喜你!你可以还原到崩溃前的状态。

一般的单位都是没有专职的DBA的,如果没有可用的备份,更可能是最近一次备份的时间过于久远而导致不可接受的数据损失,而且你的活动事务日志也处于不可用的状态,那就是最麻烦的情况了。

不幸的很的是,一般数据库崩溃都是由于存储子系统引起的,而这样的情况是几乎不可能有可用的日志用于恢复的。
那么就只好试一下这些方案了。当然,是要求至少你的数据文件是存在的,要是数据文件、日志文件和备份都没有了的话,别找我,你可以到楼顶上去唱“神啊,救救我吧”。

首先,你可以试一下sp_attach_single_file_db,试着恢复一下你的数据文件,虽然能恢复的可能性不大,不过假如这个数据库刚好执行了一个checkpoint的话,还是有可能成功的。

如果你没有好到有摸彩票的手气,最重要的数据库没有像你期盼的那样attach上去,不要气馁,还是有别的方案的。

我们可以试着重新建立一个log,先把数据库设置为emergency mode,sysdatabases的status为32768 就表示数据库处于此状态。

不过系统表是不能随便改的,设置一下先
Use Master
Go
sp_configure 'allow updates', 1
reconfigure with override
Go
然后
update sysdatabases set status = 32768 where name = '<db_name>'
现在,祈求满天神佛的保佑吧,重新建立一个log文件。成功的机会还是相当大的,系统一般都会认可你新建立的日志。如果没有报告什么错误,现在就可以松一口气了。

虽然数据是恢复了,可是别以为事情就算完成了,正在进行的事务肯定是丢失了,原来的数据也可能受到一些损坏。

先把SQL Server 重新启动一下,然后检查你的数据库吧。
先设置成单用户模式,然后做dbcc
sp_dboption '<db_name>', 'single user', 'true'
DBCC CHECKDB('<db_name>')
如果没有什么大问题就可以把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。
update sysdatabases set status = 28 where name = '<db_name>' --当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用sp_resetstatus
go
sp_configure 'allow updates', 0
reconfigure with override
Go

checkdb的时候可能报告有一些错误,这些错误的数据你可能就只好丢弃了。
checkdb有几种修复选项,自己看着用吧,不过最后你可能还是得用REPAIR_ALLOW_DATA_LOSS,完成所有修复。
chekcdb并不能完成所有的修复,我们需要更进一步的修复,用DBCC CHECKTABLE对每一个表做检查吧。
表的列表可以用sysobjects里面得到,把OBJECTPROPERTY是IsTable的全部找出来检查一下吧,这样能够基本上解决问题了,如果还报告错误,试着把数据select into到另一张表检查一下。
这些都做完了之后,把所有索引、视图、存储过程、触发器等重新建立一下。DBCC DBREINDEX也许可以帮你一些忙。

然后,就可以向boss吹嘘一下你的丰功伟业,顺便小小的提一下加薪的要求,如果(很有可能)不得逞的话,也只好回家睡觉去:'(
记得下次别忘了做好备份哦~


上面提到的命令、对象在Books Online中均有详细说明,请注意参看。
Thank you for your reading
XACZ 2003-08-19
  • 打赏
  • 举报
回复
接分,楼主你说要扁谁,我去!
vagabond2002 2003-08-19
  • 打赏
  • 举报
回复
haha,那就不要去csdn逛了阿,去大街上逛,说不定会有一段绝世姻缘呢!
TOMWLD 2003-08-19
  • 打赏
  • 举报
回复
C#到现在为止还只是一个工具,而且类库几乎全部用的是microsoft的.net framework class library,这里人气不旺也是很正常的
97866 2003-08-19
  • 打赏
  • 举报
回复
感谢各位同行们,看来我以后还是少上CSDN,多找点实际的做做了。整天上真是眼累心又累啊。
jinye 2003-08-19
  • 打赏
  • 举报
回复
自己动手。
接分。
zjf27 2003-08-19
  • 打赏
  • 举报
回复
现在关于C#B的书籍基本没有,看E文很吃力
飞不动 2003-08-19
  • 打赏
  • 举报
回复
有时间来看看也不错
主要还是靠自己多动手编写呀
knight0526 2003-08-19
  • 打赏
  • 举报
回复
这种撒气方法很好.以后要继续努力啊!
knightufp 2003-08-19
  • 打赏
  • 举报
回复
接是一种美德
有何不爽?
xswh418 2003-08-19
  • 打赏
  • 举报
回复
为什么不爽?接分
wuhaihua 2003-08-19
  • 打赏
  • 举报
回复
我是来拿分的,诚肯
97866 2003-08-19
  • 打赏
  • 举报
回复
呵呵,结。
popu2 2003-08-19
  • 打赏
  • 举报
回复
那就接罗
kingppppqqqq 2003-08-18
  • 打赏
  • 举报
回复
革命尚未成功!
状士仍需努力!
noahart 2003-08-18
  • 打赏
  • 举报
回复
so high~
我接~~
exee 2003-08-18
  • 打赏
  • 举报
回复
接分就是我的生活
liangzisiyun 2003-08-18
  • 打赏
  • 举报
回复
心情都差不多的。
谁让是程序员呢。
look79 2003-08-18
  • 打赏
  • 举报
回复
在CSDN论坛毫无目的的闲逛,确实能学到些东东,但肯定不多只有你带着问题来多贴贴子,才能学到更多的东东总之多看多做!OK
加载更多回复(7)

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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