仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1032|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页设计怎样恢复没有日记的MSSQL数据库

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性良多时分由于备份或别的缘故原由,招致了数据库的LOG日记文件丧失,在经由过程一般的SQL企业办理器没法附加数据库文件时,我们该怎样办呢?
上面先容两种办法给人人参考:
办法一
1.新建一个同名的数据库
2.再停失落sqlserver(注重不要分别数据库)
3.用原数据库的数据文件掩盖失落这个新建的数据库
4.再重启sqlserver
5.此时翻开企业办理器时会呈现置疑,先不论,实行上面的语句(注重修正个中的数据库名)
6.完成后一样平常就能够会见数据库中的数据了,这时候,数据库自己一样平常还要成绩,办理举措是,使用
数据库的剧本创立一个新的数据库,并将数据导出来就好了.
USEMASTER
GO
SP_CONFIGUREALLOWUPDATES,1RECONFIGUREWITHOVERRIDE
GO
UPDATESYSDATABASESSETSTATUS=32768WHERENAME=置疑的数据库名
Go
sp_dboption置疑的数据库名,singleuser,true
Go
DBCCCHECKDB(置疑的数据库名)
Go
updatesysdatabasessetstatus=28wherename=置疑的数据库名
Go
sp_configureallowupdates,0reconfigurewithoverride
Go
sp_dboption置疑的数据库名,singleuser,false
Go
办法二
事变的原因
今天,体系办理员告知我,我们一个外部使用数据库地点的磁盘空间不敷了。我注重到数据库事务日记文件XXX_Data.ldf文件已增加到了3GB,因而我决意减少这个日记文件。经由压缩数据库等操纵未果后,我犯了一个自进进行业以来的最年夜最愚昧的毛病:居然误删除这个日记文件!厥后我看到一切论及数据库恢复的文章上都说道:“不管怎样都要包管数据库日记文件存在,它相当主要”,乃至微软乃至有一篇KB文章讲怎样只靠日记文件恢单数据库的。我真是不晓得我当时候是怎样想的?!
这下子坏了!这个数据库连不上了,企业办理器在它的中间写着“(置疑)”。并且最要命的,这个数据库历来没有备份了。我独一找失掉的是迁徙半年前的别的一个数据库服务器,使用却是能用了,可是少了很多纪录、表和存储历程。真但愿这只是一场恶梦!
没无效果的恢复步骤
附加数据库
_Rambo讲过被删除日记文件中不存在举动日记时,能够这么做来恢复:
1,分别被置疑的数据库,可使用sp_detach_db
2,附加数据库,可使用sp_attach_single_file_db
可是,很遗憾,实行以后,SQLServer质疑数据文件和日记文件不符,以是没法附加数据库数据文件。
DTS数据导出
不可,没法读取XXX数据库,DTSWizard呈报说“初始化高低文产生毛病”。
告急形式
怡红令郎讲过没有日记用于恢复时,能够这么做:
1,把数据库设置为emergencymode
2,从头创建一个log文件
3,把SQLServer从头启动一下
4,把使用数据库设置成单用户形式
5,做DBCCCHECKDB
6,假如没有甚么年夜成绩就能够把数据库形态改归去了,记得别忘了把体系表的修正选项关失落
我理论了一下,把使用数据库的数据文件移走,从头创建一个同名的数据库XXX,然后停失落SQL服务,把本来的数据文件再掩盖返来。以后,依照怡红令郎的步骤走。
可是,也很遗憾,除第2步以外,其他步骤实行十分乐成。惋惜,重启SQLServer以后,这个使用数据库仍旧是置疑!
不外,让我欣喜的是,这么做以后,却是可以Select数据了,让我年夜出一口吻。只不外,组件利用数据库时,呈报说:“产生毛病:-2147467259,未能在数据库XXX中运转BEGINTRANSACTION,由于该数据库处于躲避恢复形式。”
终极乐成恢复的全体步骤
设置数据库为告急形式
停失落SQLServer服务;
把使用数据库的数据文件XXX_Data.mdf移走;
从头创建一个同名的数据库XXX;
停失落SQL服务;
把本来的数据文件再掩盖返来;
运转以下语句,把该数据库设置为告急形式;
运转“UseMaster
Go
sp_configureallowupdates,1
reconfigurewithoverride
Go”
实行了局:
DBCC实行终了。假如DBCC输入了毛病信息,请与体系办理员接洽。
已将设置选项allowupdates从0改成1。请运转RECONFIGURE语句以安装。
接着运转“updatesysdatabasessetstatus=32768wherename=XXX”
实行了局:
(所影响的行数为1行)
重启SQLServer服务;
运转以下语句,把使用数据库设置为SingleUser形式;
运转“sp_dboptionXXX,singleuser,true”
实行了局:
命令已乐成完成。
做DBCCCHECKDB;
运转“DBCCCHECKDB(XXX)”
实行了局:
XXX的DBCC了局。
sysobjects的DBCC了局。
工具sysobjects有273行,这些行位于5页中。
sysindexes的DBCC了局。
工具sysindexes有202行,这些行位于7页中。
syscolumns的DBCC了局。
………
运转以下语句把体系表的修正选项关失落;
运转“sp_resetstatus"XXX"
go
sp_configureallowupdates,0
reconfigurewithoverride
Go”
实行了局:
在sysdatabases中更新数据库XXX的条目之前,形式=0,形态=28(形态suspect_bit=0),
没有更新sysdatabases中的任何行,由于已准确地重置了形式和形态。没有毛病,未举行任何变动。
DBCC实行终了。假如DBCC输入了毛病信息,请与体系办理员接洽。
已将设置选项allowupdates从1改成0。请运转RECONFIGURE语句以安装。
从头创建别的一个数据库XXX.Lost;
DTS导出导游
运转DTS导出导游;
复制源选择EmergencyMode的数据库XXX,导进到XXX.Lost;
选择“在SQLServer数据库之间复制工具和数据”,试了屡次,仿佛不可,只是复制过去了一切表布局,可是没无数据,也没有视图和存储历程,并且DTS导游最初呈报复制失利;
以是最初选择“从源数据库复制表和视图”,可是厥后发明,如许老是只能复制一部分表纪录;
因而选择“用一条查询指定要传输的数据”,缺哪一个表纪录,就导哪一个;
视图和存储历程是实行SQL语句增加的。
如许,XXX.Lost数据库就能够交换本来的使用数据库了
虽然可以将一个droptable语句转换成先delete再删表,性能却会降低很多。这里我们用上面说道的另外一种可用数据:“操作前数据备份”。
莫相离 该用户已被删除
沙发
发表于 2015-1-19 07:20:29 | 只看该作者
这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?
变相怪杰 该用户已被删除
板凳
发表于 2015-1-28 05:37:46 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
只想知道 该用户已被删除
地板
发表于 2015-2-5 17:34:58 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
飘灵儿 该用户已被删除
5#
发表于 2015-2-13 03:57:33 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
精灵巫婆 该用户已被删除
6#
发表于 2015-3-3 13:56:20 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
爱飞 该用户已被删除
7#
发表于 2015-3-11 11:33:52 | 只看该作者
发几份SQL课件,以飨阅者
金色的骷髅 该用户已被删除
8#
发表于 2015-3-18 14:56:59 | 只看该作者
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
老尸 该用户已被删除
9#
发表于 2015-3-26 09:56:53 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表