SQL Server 在缺少文件組的情況下如何還原數據庫


SQL Server 在缺少文件組的情況下如何還原數據庫

一、背景

  我有一個A庫,由於a,b兩張表的數據量比較大,所以對表進行分區;在把A庫遷移到一個新的集群上去,我只備份了A庫的主分區過去進行還原為B庫(主分區的備份還原可參考:SQL Server 維護計划備份主分區主分區備份與還原),為了對a,b表進新的數據,我修改了a,b表名,在B庫新建了兩張不分區的a,b表;

這樣運行都沒有什么問題的,但是在一次我分離了數據庫B,拷貝了mdf和ldf文件,現在想使用mdf和ldf還原為B庫的時候出錯了;

 

二、解決過程

  在使用SSMS的還原功能進行還原的時候出現了下面的錯誤:

clip_image002

(圖1:找不到文件組)

clip_image004

(圖2:手動創建一個ndf文件報錯)

  在還原的時候需要指定ndf文件的目錄,但是由於在備份的時候我們只備份了主文件,所以是沒有ndf文件的(注意:表結構是在主文件組的,所以這里會顯示ndf文件信息),這個時候想通過刪除列表中ndf,卻發現刪除按鈕不可用,如圖1所示;

  在對應的目錄中手動創建一個ndf文件,出現了圖2的錯誤,因為無法讀取到文件頭;

  難道就無法還原數據庫B了嘛?不要着急,我們把上面的操作生成SQL代碼,把不需要的ndf文件刪除掉,剩下類似下面的SQL代碼,執行,還原了數據庫B!

USE [master]
GO
CREATE DATABASE [QQMonitor] ON 
( FILENAME = N'E:\DBBackup\DBName.mdf' ),
( FILENAME = N'E:\DBBackup\DBName_log.ldf' )
 FOR ATTACH
GO

  或者自己直接寫代碼,例如以下的代碼:

--還原主分區
RESTORE DATABASE [TestAnt]
FILEGROUP='PRIMARY'
FROM DISK='F:\DBBackup\Ant_Primary\Ant_Primary_20110916000001.bak' WITH FILE = 1,
MOVE N'Barefoot.Ant' TO N'F:\DBBackup\TestAnt.mdf',
MOVE N'Barefoot.Ant_log' TO N'F:\DBBackup\TestAnt_log.ldf',
RECOVERY,REPLACE,  STATS = 10
GO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM