收录日期:2018/07/18 14:20:34 时间:2016/05/21 14:12:32 标签:应用实例
看到一文件有10G之巨,直接删除之。因为SQLSERVER还在用,当然删除不掉。
结果启动DOS,在DOS下删除了database.ldf文件.......

结果是可想而知的........

求数据库高手帮助,如成功,送一年免费VIP贵宾帐号。提供电影,A片.............


救命啊!!! 
新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数

据库文件,启动数据库,该数据库被设未suspect

然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'

把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )

恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override

然后用DBCC CHECKDB ('数据库名')看看有没有错误

如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库

--清除日志
方法1、
--在查询分析器,选中所要清理日志的数据库,执行如下SQL
backup log 数据库名 with no_log
DBCC SHRINKFILE ( 日志文件名或日志文件ID,要缩小的目标大小)
        
在当前数据库下
select fileid,groupid,name from sysfiles where groupid=0
----------------------------------------
得到以下结果
fileid     groupid          name  
2          0                test_log 

以上结果,fileid为日志文件ID,name为test_log

你可以
backup log test with no_log
dbcc shrinkfile (2,2)
or
backup log test with no_log
dbcc shrinkfile ('test_log',2)
如果以后,不想要它变大,在数据库上点右键->属性->选项->故障恢复  模型 选择 简单模型就可以了!
或用SQL语句
alter database 数据库名 set recovery simple

方法2、
SQL SERVER企业管理器-》SQL SERVER组-》服务器-》数据库-》选中数据库实体-》右键-》所有任务-》分离数据库,
然后到数据库所在物理路径下删除.ldf文件,再数据库右键-》所有任务-》附加数据库,即可,会重新生成日志文件。

清空日志
DUMP  TRANSACTION  库名  WITH  NO_LOG  

或:

截断日志:
backup log 数据库 with no_log
然后再压缩:

企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
EXEC sp_detach_db @dbname = 'database'
EXEC sp_attach_single_file_db @dbname = 'database', 
   @physname = 'c:\MSSQL\Data\database.mdf'
“一年免费VIP贵宾帐号。提供电影,A片”?!

呵呵,奖品丰厚,吸引了众多星星...
来晚了,楼上几位的方法应该可以解决了.
DUMP  TRANSACTION  库名  WITH  NO_LOG
你的奖品太吸引人了
账号多少?
谁得到,共享之

呵呵,来晚了,只有这个主意了
谁得到,共享之

呵呵,来晚了,只有这个主意了
感谢各位帮助!
恢复好后我会用短信一一通知各位的。谢谢
EXEC sp_detach_db @dbname = 'database'
EXEC sp_attach_single_file_db @dbname = 'database', 
   @physname = 'c:\MSSQL\Data\database.mdf'

按照这种方法恢复,可是.......

服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'bbs'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'E:\webhome\SQL数据库\bbs_log.ldf' 可能有误。
你这样:

新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来文件替换新建的数

据库文件,启动数据库,该数据库被设未suspect

然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = '数据库名'

把LDF文件改名,再执行
DBCC REBUILD_LOG ('数据库名', 'E:\fdzz\database\fdzz1204_Log.LDF' )

恢复数据库紧急模式
update sysdatabases set status = 0 where name = '数据库名'
执行
restore database 数据库名 WITH RECOVERY
sp_configure 'allow', 0
reconfigure with override

然后用DBCC CHECKDB ('数据库名')看看有没有错误

如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,在把数据导出到一个新的数据库
搞定了,结帐!