SQLSERVERDatabase Backup後無法還原的解決辦法
最後更新:2017-02-28
來源:互聯網
上載者:User
有時候為了考慮資料安全我們都會備份資料庫,sqlserver的備份格式一般都是bak結尾的,但覆蓋時容易出問題,這裡簡單介紹下,需要的朋友可以參考下 有時候完全備份, 當還原的時候說不時資料庫檔案不讓還原, 解決辦法:
可以直接複製資料庫檔案, xxx.mdf 和 xxx.ldf (實際複製過程中需要先停止sqlserver服務才可以)
用 sp_attach_db 預存程序 就能搞定.
樣本
下面的樣本將 pubs 中的兩個檔案附加到當前伺服器。
EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:Program FilesMicrosoft SQL ServerMSSQLDatapubs.mdf',
@filename2 = N'c:Program FilesMicrosoft SQL ServerMSSQLDatapubs_log.ldf'
N 表示Unicode的含義,就象類型中有varchar和nvarchar一樣,一個Unicode字元佔兩個位元組.使用N'的情況主要是在雙位元組系統環 境中強制系統對每個字元用Unicode標準來解釋,否則如果你的資料庫.mdf檔案是中文名而又不加N'的話,資料庫載入後名稱可能就變成亂碼,因為系 統按單位元組處理字元造成!
............................................................
如果確認是SQL SERVER無法啟動,請按照下面步驟操作:
1.重裝SQL SERVER(注意要保留原來資料庫的資料庫檔案,記錄檔可不要)
2.在SQL Analysis中用sp_attach_db將資料庫加到伺服器
sp_attach_db用法:
sp_attach_db
將資料庫附加到伺服器。
文法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]
參數
[@dbname =] 'dbname'
要附加到伺服器的資料庫的名稱。該名稱必須是唯一的。dbname 的資料類型為 sysname,預設值為 NULL。
[@filename1 =] 'filename_n'
數 據庫檔案的實體名稱,包括路徑。filename_n 的資料類型為 nvarchar(260),預設值為 NULL。最多可以指定 16 個檔案名稱。參數名稱以 @filename1 開始,遞增到 @filename16。檔案名稱列表至少必須包括主檔案,主檔案包含指向資料庫中其它檔案的系統資料表。該列表還必須包括資料庫分離後所有被移動的檔案。
傳回碼值
0(成功)或 1(失敗)
結果集
無
注釋
只應對以前使用顯式 sp_detach_db 操作從資料庫伺服器分離的資料庫執行 sp_attach_db。如果必須指定多於 16 個檔案,請使用帶有 FOR ATTACH 子句的 CREATE DATABASE。
如果將資料庫附加到的伺服器不是該資料庫從中分離的伺服器,並且啟用了分離的資料庫以進行複製,則應該運行 sp_removedbreplication 從資料庫刪除複製。
許可權
只有 sysadmin 和 dbcreator 固定伺服器角色的成員才能執行本過程。