当前位置:  数据库>sqlserver

删除sqlserver数据库日志和没有日志的数据库恢复办法

    来源: 互联网  发布时间:2014-10-13

    本文导语:  一、删除数据库日志文件的方法 你曾经有在执行SQL的时候,数据库报事务日志已满,然后执行报错。然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你! 方法一:手工操作1....

一、删除数据库日志文件的方法

你曾经有在执行SQL的时候,数据库报事务日志已满,然后执行报错。然后纠结于怎么删除数据库日志,捣鼓半天吗,现在就提供两种删除日志文件的方法,希望能够帮到你!

方法一:手工操作
1.数据库->右键->属性->选项-恢复模式->由完成切换成简单
2.数据库->右键->任务->收缩-文件->由完成切换成简单->文件类型->日志->将文件收缩到



方法二:存储过程代替手工操作

代码如下:

--日志文件收缩至多少M
    DECLARE @DBLogSise AS INT
    SET @DBLogSise=0
    --查询出数据库对应的日志文件名称
    DECLARE @strDBName AS NVARCHAR(500)    DECLARE @strLogName AS NVARCHAR(500)    DECLARE @strSQL AS VARCHAR(1000)   
    SELECT
        @strLogName=B.name,        @strDBName=A.name    FROM master.sys.databases AS A    INNER JOIN sys.master_files AS B    ON A.database_id = B.database_id    WHERE A.database_id=DB_ID()

    SET @strSQL='
    --设置数据库恢复模式为简单
    ALTER DATABASE ['+@strDBName+'] SET RECOVERY SIMPLE;
    --收缩日志文件
    DBCC SHRINKFILE ('''+@strLogName+''' , '+CONVERT(VARCHAR(20),@DBLogSise)+');
    --恢复数据库还原模式为完整
    ALTER DATABASE ['+@strDBName+'] SET RECOVERY FULL '
    exec(@strSQL)

1.在数据库中执行上面的存储过程
2.然后再执行 EXEC dbo.usp_p_delDBLog @DBLogSise = 0 (收缩至多少M)

二、没有日志文件的数据库恢复方法

今天客户那边执行SQL报错,经查看是客户服务器数据库磁盘已被全部用完,日志文件达到500GB的程度,后来由于我的错误操作导致日志文件(.ldf)被删除,后来附加.mdf文件老是说没有日志文件附加不成功,后来经过一番折腾终于解决了,下面分享一下!

操作步骤

1.新建同名的数据库文件
2.暂停SQLSetver服务
3.将原先的mdf文件,覆盖新建的数据库,删除新数据库的ldf文件
4.重新启动SQLSetver服务 ,这时看到的数据库是这个样子的,打不开


5.执行以下SQL语句
代码如下:

--1.设置为紧急状态
alter database 数据库名称 set emergency
--2.设置为单用户模式
alter database 数据库名称 set single_user
--3.检查并重建日志文件
dbcc checkdb('数据库名称',REPAIR_ALLOW_DATA_LOSS)
--4.第3步操作如果有错误提示,运行第4步,没有错误则跳过
dbcc checkdb('数据库名称',REPAIR_REBUILD)
--5.恢复成多用户模式
alter database 数据库名称 set multi_user

6.至此会重新生成改库的日志文件,整个过程完成

或者也可以采用手动附加(本方法参考@码道程工)



    
 
 

您可能感兴趣的文章:

  • 删除数据库中重复记录方法介绍及代码参考
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • 我在table中选中一行删除后,数据库中是删除了,但我的table中这一行还显示,我怎么让他不显示??
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • 用PreparedStatement ps 在数据库中插入记录,但还未提交事务,此时再用Delete语句为什么删除不了用 ps刚才插入的记录,如何可以删除未这
  • 一个数据库删除的问题,急急急
  • Sql Server 2000删除数据库备份文件
  • 删除mysql数据库中的重复数据记录
  • 如何强制删除或恢复SQLServer正在使用的数据库
  • SQL建立数据库及删除数据库命令
  • linux使用mysql删除数据库的问题,谢谢!
  • 我不小心用mysqlfront把一个mysql数据库删除了,能不能恢复(没有备份),大家一定要救我阿。
  • 如何在Linux的shell中先删除数据库再创建数据库
  • php批量删除数据库下指定前缀的表以prefix_为例
  • MSSQL中删除用户时数据库主体在该数据库存中拥有架构 无法删除的解决方法
  • oracle数据库添加或删除一列的sql语句
  • 使用php批量删除数据库下所有前缀为prefix_的表
  • 如何在一个页面关闭之前将数据库中相应信息删除?
  • mysql数据库中的information_schema和mysql可以删除吗?
  • 插入数据库行删除不行哪位给解释一下
  • 彻底删除Oracle数据库的方法
  • sql server 删除表1某些数据的同时自动删除表2的相关数据的sql代码
  • linux 变量内容删除 中有关“最短数据删除”的意思
  • 每次运行时,将针对该用户的数据放在临时表如-temTableA中,用完之后删除数据,安全上有问题吗?
  • 想问下如果删除协议栈直接从网卡中读取数据是什么数据呢??
  • MSSQL 删除数据库里某个用户所有表里的数据
  • MySQL防止delete命令删除数据的两种方法
  • ThinkPHP实现批量删除数据的代码实例
  • MYSQL删除表中的指定ID数据
  • 救命:在linux下有什么办法恢复刚刚删除的数据?
  • 重复数据删除 Duke
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle 11g的警告日志和监听日志的删除方法
  • 请指点:用Shell编程完成删除7天前的日志文件
  • linux删除180天前日志的shell
  • 有没有日志会记录删除命令
  • Oracle 删除归档日志实例
  • 如何查找 删除 linux不断增加的垃圾日志文件?
  • sql2008 删除太大的日志文件的方法
  • sql2000 删除大日志文件的方法
  • 求助呀,我们的HP-UNIX的服务器经常发现有文件被恶意删除。有查询用户执行命令的记录日志吗,感谢了!
  • sql server事务日志压缩与删除的三种方法
  • win平台oracle rman备份和删除dg备库归档日志脚本
  • nginx访问日志并删除指定天数前的日志记录配置方法
  • 删除SQL Server日志的方法详解
  • 有用的SQL语句(删除重复记录,收缩日志)
  • C++ Maps 成员 erase():删除一个元素
  • 怎么实现,动态的增加和删除input,删除时用radiobox选中,然后点删除,即可。谢谢
  • C++ MultiMaps 成员 erase():删除元素
  • 100分相送,怎么实现,动态的增加和删除input,删除时用radiobox选中,然后点删除,即可
  • C++ Double Ended Queues(双向队列) 成员 erase():删除一个元素
  • 请问:linux中的软件包安装后,怎么删除呀,直接删除吗?
  • C++ Lists(链表) 成员 erase():删除一个元素
  • jquery删除提示框(弹出是否删除对话框)
  • C++ Lists(链表) 成员 remove():从list删除元素
  • vim删除命令"d3e"为什么删除单词的数目不一致?
  • C++ Lists(链表) 成员 unique():删除list中重复的元素
  • 如何删除前面有个-的文件,我的根目录下有个文件叫 -C,请问如何删除?
  • C++ Lists(链表) 成员 pop_front():删除第一个元素
  • jquery删除提示框弹出是否删除对话框
  • C++ Priority Queues(优先队列) 成员 pop():删除第一个元素
  • GRUB的删除与逻辑驱动器存在时扩展分区的删除
  • C++ Queues(队列) 成员 pop():删除第一个元素


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3