zoukankan      html  css  js  c++  java
  • 【20130321】sql server 2005 之后 文件状态变为了7,DEFUNCT(僵死状态)

    问题:

        sql server 2005 之后 文件状态变为了7,DEFUNCT(僵死状态)

    问题原因:

        一般都是因为一些不合法的操作引起的 如以下:

    CREATE DATABASE Test
    GO
    ALTER DATABASE [Test] ADD FILEGROUP [TestFG]
    GO
    ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFile', FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\TestFile.ndf'
    , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [TestFG]
    GO
    --ok at this point you set it offline
    ALTER DATABASE Test MODIFY FILE (NAME = TestFile, OFFLINE);SELECT state_desc,* FROM Test.sys.database_files;
    GO  
     
    ALTER DATABASE Test MODIFY FILE (NAME = TestFile, OFFLINE);
    GO
    ALTER DATABASE [Test] REMOVE FILEGROUP [TestFG]
    GO
    ALTER DATABASE [Test]  REMOVE FILE [TestFile]
    GO
    SELECT state_desc,* FROM Test.sys.database_files;

    解决方法:

         使用-m启动服务,使用DAC连接,使用一下代码修改系统表。之前可能要配置 sp_configure 中的 allow update参数。

    UPDATE  Test.sys.sysprufiles set filestate  = 6 where fileid = 3;
    UPDATE master.sys.sysbrickfiles set filestate  = 6  where dbid = db_id('Test') and fileid = 3;
    checkpoint

        正常启动服务,现在文件正处于offline 状态,修改为online,并删除文件和文件组。若数据文件丢失或备份丢失,那么就没办法online了,这个问题还需要深入研究

    RESTORE DATABASE test FILE='TestFile' WITH recovery
    go
    ALTER DATABASE [Test]  REMOVE FILE [TestFile]
    go
    ALTER DATABASE [Test] REMOVE FILEGROUP [TestFG]
    GO
  • 相关阅读:
    SVN使用svn+ssh协议连接服务器时重复提示输入密码 解决办法
    SQL Server 2008 排序函数 ROW_NUMBER和RANK 用法总结
    数据表基础知识(1)
    数据库基本概念
    String函数
    委托
    递归算法
    关于C#引用类型赋值
    BackgroundWorker的应用
    DevExpress_Report 主从报表绑定数据,分页打印
  • 原文地址:https://www.cnblogs.com/Amaranthus/p/2973113.html
Copyright © 2011-2022 走看看