zoukankan      html  css  js  c++  java
  • 文件收缩和移除

    收缩数据文件(要腾空间,没办法只能收缩文件)的过程中,遇到日志备份,报错

    USE [DBA_Monitor]
    GO
    DBCC SHRINKFILE (N'DBA_Monitor' , 276000)
    GO
    View Code


    等待日志备份结束,再次收缩数据文件,报错

    查询得知可通过修改文件初始大小

    --修改文件初始大小,当前大小的基础上加1M
    USE [master]
    GO
    ALTER DATABASE [DBA_Monitor] MODIFY FILE ( NAME = N'DBA_Monitor', SIZE = 283649024KB )
    GO
    View Code

    再次收缩正常。
    发现一数据库有两个日志文件,SQLServer对日志记录是按照严格的顺序写入的。所以虽然这里有两个日志文件,SQLServer还是在一个时间点只写其中的一个。只有这个文件写满了,SQLSERVER才会写入另外一个。因此加入多个日志文件对性能基本不会有什么帮助。
    如何确认当前使用的是哪个日志文件?
    可以使用dbcc loginfo命令,查看当前Status>0的FileID

    create table #loginfo(FileId int,FileSize int,StartOffset bigint,FSeqNo bigint,Status int,Parity int,CreateLSN varchar(32))
    insert into #loginfo
    exec('dbcc loginfo')
    select * From #loginfo
    where status>0
    drop table #loginfo
    View Code

    如何删除多余的日志文件
    首先,清空多余的日志文件;然后,删除清空后的日志文件

    --step1通过将数据迁移到同一文件组中的其他文件来清空文件
    USE [DBA_Monitor]
    GO
    DBCC SHRINKFILE (N'DBA_Monitor_log2' , EMPTYFILE)
    GO
    --step2移除清空后的日志文件
    USE [DBA_Monitor]
    GO
    ALTER DATABASE [DBA_Monitor] REMOVE FILE [DBA_Monitor_log2]
    GO
    View Code
  • 相关阅读:
    如何在VS2013中进行Boost单元测试
    C++项目中的extern "C" {}(转)
    C/C++语言中NULL、'’和0的区别
    关于C++“加、减机制”的整理
    C++继承中的public/protected/private
    Systemc在VC++2010安装方法及如何在VC++2010运行Noxim模拟器
    Testbench(转)
    Java高级特性之泛型
    Java高级特性之反射
    Java 输入输出流
  • 原文地址:https://www.cnblogs.com/Uest/p/5807888.html
Copyright © 2011-2022 走看看