+ -
当前位置:首页 → 问答吧 → SQL Server 2008備份還原資料庫問題

SQL Server 2008備份還原資料庫問題

时间:2011-01-04

来源:互联网

SQL Server 2008標準版,對數據庫進行完整備份、差異備份及日誌備份。現在是通過SSMS管理界面操作。可以正常進行資料庫的完整備份、差異備份及日誌備份。然後我將這三個文件傳在局域網內的另一服務器上。準備把這三個依次還原。先是還原完整備份沒發生異常現象,接下來還原差異備份。問題就出來了:右鍵選中要還原的資料庫-->‘工作’-->'還原'-->'資料庫',打開‘還原資料庫’窗口,還原的目的地是默認遷中的資料庫不用修改,還原的來源因為是文件,所以點擊來源裝置,選擇差異備份的那個bak或trn文件。確定後返回的在選擇要還原的備份組這裏就只有剛才選擇的差異備份的文件,遷中它。然後再在‘遷取頁面’的‘選項’里,‘還原遷項'那邊不管我選哪一個或都不選擇。復原狀態我選擇了默認選中第一個,我選擇了第二個,因為接下來還要還原日誌文件(不管是選第一第二第三個)都不行。再點確定後總會彈出一個失敗的提示:“System.Data.SqlClient.SqlError:無法還原記錄或差異備份,因為沒有可向前復原的檔案。(Microsoft.SqlServer.Smo)”,這句話到底是什麼意思呢。我資料庫的完整備份文件已經還原了啊。正在鬱悶中。還望各位幫我看看。謝謝!

作者: maosenmin   发布时间: 2011-01-04

字都难看。 还繁体字。顶一下..

作者: zhudashu   发布时间: 2011-01-04

不知道繁体的这个是什么意思 
建议用tsql的方式还原
1 恢复完整备份
restore database dbname from disk='your full backup path and filename' with norecovery
2 恢复差异备份
restore database dbname from disk='your diff backup path and filename' with norecovery
3 恢复日志备份
restore log dbname from disk='your tran backup path and filename' with recovery 

作者: billpu   发布时间: 2011-01-04

嗯。就是2樓的意思。可我也按照msdn上的說明用TSQL寫了,也是不行的。

作者: maosenmin   发布时间: 2011-01-04

我執行
RESTORE DATABASE test FROM DISK='D:\upload\def\20110104\testa.bak' WITH NORECOVERY後,控制臺顯示“訊息 3117,層級 16,狀態 4,行 2
無法還原記錄或差異備份,因為沒有可向前復原的檔案。
訊息 3013,層級 16,狀態 1,行 2
RESTORE DATABASE 正在異常結束。
”。

作者: maosenmin   发布时间: 2011-01-04

有两种可能(如果你的norecovery没问题)
1 你的完全备份有不只一个备份媒体集(也就是你不只一次备份到这个文件里),而你还原的时候没有指定file参数
检验办法
restore headeronly from disk='your full backup path and filename'

2 你的差异备份有不只一个备份媒体集,你也可以用上述语句检查

作者: billpu   发布时间: 2011-01-04

把你备份还原的完整语句发上来

作者: wxf163   发布时间: 2011-01-04

SQL code
--创建测试数据库Test
create database Test
on primary
(
name='Test_data.mdf',
filename='d:\Test_data.mdf'
)
log on
(
name='Test_data.ldf',
filename='d:\Test_data.ldf'
)
--创建测试表
create table Test.dbo.ta(id int)
insert into Test.dbo.ta select id from sysobjects
--创建备份文件
backup database Test to disk='d:\Test.bak' with format
--创建一个NDF文件
alter database Test
add file
       (
         name='file',
         filename='d:\test.ndf',
         SIZE = 1MB
       )
--关闭MSSQL服务,然后删除NDF文件然后再打开MSSQL服务,此时Test数据库被疑置啦!
--恢复数据疑置
--首先备份日志文件
backup log Test to disk='d:\Test_log.bak' with format,no_truncate
--利用文件组备份文件恢复被破坏的文件
restore database Test from disk='d:\Test.bak' with Norecovery
--恢复日志文件
restore Log Test from disk='d:\Test_log.bak' with RECOVERY 

--TipS
--如果已经建立ndf文件的话那么恢复日志文件的话用下面的这句话
--只不过将with RECOVERY-->WITH REPLACE
restore Log Test from disk='d:\Test_log.bak' WITH REPLACE 



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ws_hgo/archive/2010/04/07/5457193.aspx

作者: ws_hgo   发布时间: 2011-01-04

---full backup

Declare @FULLFileName varchar(200)
Declare @FileFlag varchar(200)
Set @FileFlag=convert(varchar(12),getdate(),112)
Set @FULLFileName='D:\Backup\DB_FULL_'+@FileFlag+'.BAK'
BackUp DataBase [test] To Disk=@FULLFileName with init
Go

---diff backup

Declare @FULLFileName varchar(200)
Declare @FileFlag varchar(200)
Set @FileFlag=convert(varchar(12),getdate(),112)
Set @FULLFileName='E:\Backup\DB_DIFF_'+@FileFlag+'.BAK'
BackUp DataBase [test] To Disk=@FULLFileName with init,differential
Go

這個我都執行不了.訊息 3201,層級 16,狀態 1,行 5
無法開啟備份裝置 'E:\Backup\DB_DIFF_20110104.BAK'。作業系統錯誤 21(裝置未就緒。)。
訊息 3013,層級 16,狀態 1,行 5
BACKUP DATABASE 正在異常結束。

Go

作者: maosenmin   发布时间: 2011-01-04

怎么又备份了呢...刚刚不是还原的问题?
E:\Backup\DB_DIFF_20110104.BAK 确认一下这个文件的权限设置为可读写

作者: billpu   发布时间: 2011-01-04

热门下载

更多