zoukankan      html  css  js  c++  java
  • 丢失或损坏NDF文件如何附加数据库

     

    在论坛看到有人遇到 NDF文件丢失并且没有备份,所以无法成功附加数据库。在网上也看到过很多回答是如果没有NDF就无法附加成功。

     

    其实我自己测试下来即使没有NDF也是可以成功附加的。但是有条件,丢失的NDF文件不属于Primary file group并且SQL Server为企业版

     

    下面是我做的测试: 

     

    1.       --创建数据库

     

    CREATE DATABASE[test1] CONTAINMENT=NONE  ON PRIMARY

    ( NAME=N'test1',FILENAME= N'C:data est1.mdf',SIZE = 5120KB,MAXSIZE = UNLIMITED,FILEGROWTH= 1024KB),

     FILEGROUP [New]

    ( NAME=N'new',FILENAME= N'C:data ew.ndf', SIZE = 5120KB, MAXSIZE = UNLIMITED,FILEGROWTH= 1024KB)

     LOG ON

    ( NAME=N'test1_log',FILENAME= N'C:data est1_log.ldf',SIZE = 1024KB,MAXSIZE = 2048GB,FILEGROWTH = 10%)

    GO

     

    2.       --primary file group上创建两张表

     

    create tabletest(namevarchar(10)) ON[PRIMARY]

    create tabletest2(namevarchar(10)) ON[PRIMARY]

    --NDF上面创建一张表

    create tabletest1(namevarchar(10))onnew

     

    3.       --插入10条数据

     

    insert intotestvalues ('kevin')

    go 10

    insert intotest1values ('kevin')

    go 10

    insert intotest2values ('kevin')

    go 10

     

    4.       --Detach数据库

     USE[master]

    GO

    EXEC master.dbo.sp_detach_db@dbname=N'test1'

    GO

     

    5.       MDFNDFLDF文件复制到其他文件夹

     

    6.       按照第一步的脚步创建一个同名的数据库

     

    --将数据库Offline

    use master

    go

    alter databasetest1set offline

     

    7.       将第5步备份的MDFLDF文件覆盖现在的数据库MDFLDF

     

    8.       将出问题的NDF文件Offline

     

    alter databasetest1modify FILE  (name=new ,offline)

     

    9.       将数据库Online

     

    alter databasetest1set online

     

    现在可以看到三张表都是存在的

     

     

    但是访问test1表的时候会出现下面的错误:

     

    Msg 8653,Level 16, State 1, Line 1

    The queryprocessor is unable to produce a plan for the table or view 'test1' because thetable resides in a filegroup which is not online.

     

    因为表所在的Filegroup是离线的,所以无法访问。

     

     

     

  • 相关阅读:
    C++第7周任务3输出星号图详解示例
    C++第7周任务3输出星号图全解
    C02程序设计基础提高班(C++)第7周上机任务指针
    毕业生反馈(三)
    C++程序设计第七周上机实践项目
    C03Java同步实践加强班第7周上机任务
    写给菜鸟:发CSDN博文常见问题处理
    android项目 添加
    编译某一个ko模块make modules SUBDIRS=drivers/xxx/
    修改其他输入法为android 默认输入法
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3244058.html
Copyright © 2011-2022 走看看