程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQLSERVER數據庫備份後無法還原的解決辦法

SQLSERVER數據庫備份後無法還原的解決辦法

編輯:關於SqlServer
    有時候為了考慮數據安全我們都會備份數據庫,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 固定服務器角色的成員才能執行本過程。  
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved