日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

丢失或损坏NDF文件如何附加数据库

發布時間:2025/7/14 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 丢失或损坏NDF文件如何附加数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在論壇看到有人遇到?NDF文件丟失并且沒有備份,所以無法成功附加數據庫。在網上也看到過很多回答是如果沒有NDF就無法附加成功。

?

其實我自己測試下來即使沒有NDF也是可以成功附加的。但是有條件,丟失的NDF文件不屬于Primary?file?group并且SQL?Server為企業版

下面是我做的測試:

1.???????--創建數據庫

CREATE?DATABASE?[test1]?CONTAINMENT=NONE?ONPRIMARY

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

FILEGROUP[New]

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

LOGON

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

GO

2.???????--primary?file?group上創建兩張表

?

create?table?test(namevarchar(10))ON[PRIMARY]

create?table?test2(namevarchar(10))ON[PRIMARY]

--NDF上面創建一張表

create?table?test1(namevarchar(10))onnew

?

3.???????--插入10條數據

insert?into?test?values?('kevin')

go?10

insert?into?test1values?('kevin')

go?10

insert?into?test2?values?('kevin')

go?10

?

4.???????--Detach數據庫

?

USE[master]

GO

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

GO

?

5.???????將MDF,NDF,LDF文件復制到其他文件夾

?

6.???????按照第一步的腳步創建一個同名的數據庫?

--將數據庫Offline

usemaster

go

alter?database?test1?set?offline

?

7.將第5步備份的MDF和LDF文件覆蓋現在的數據庫MDF和LDF

?

8.將出問題的NDF文件Offline?

?

alter?database?test1?modify?FILE??(name=new,offline)

?

9.將數據庫Online

?

alter?database?test1?set?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是離線的,所以無法訪問。

?

轉載于:https://blog.51cto.com/lzf328/1265931

總結

以上是生活随笔為你收集整理的丢失或损坏NDF文件如何附加数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。