熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

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

2013-11-23 21:05:28  來源: MySQL 
有時候為了考慮數據安全我們都會備份數據庫sqlserver的備份格式一般都是bak結尾的但覆蓋時容易出問題這裡簡單介紹下需要的朋友可以參考下   有時候完全備份 當還原的時候說不時數據庫文件不讓還原 解決辦法:
可以直接復制數據庫文件 xxxmdf 和 xxxldf (實際復制過程中需要先停止sqlserver服務才可以)

用 sp_attach_db 存儲過程 就能搞定

示例
下面的示例將 pubs 中的兩個文件附加到當前服務器

EXEC sp_attach_db @dbname = Npubs
@filename = Nc:\Program Files\Microsoft SQL Server\MSSQL\Data\pubsmdf
@filename = Nc:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_logldf


N 表示Unicode的含義就象類型中有varchar和nvarchar一樣一個Unicode字符占兩個字節使用N的情況主要是在雙字節系統環 境中強制系統對每個字符用Unicode標准來解釋否則如果你的數據庫mdf文件是中文名而又不加N的話數據庫加載後名稱可能就變成亂碼因為系 統按單字節處理字符造成!





如果確認是SQL SERVER無法啟動請按照下面步驟操作:
重裝SQL SERVER(注意要保留原來數據庫的數據庫文件日志文件可不要)
在SQL Analysis中用sp_attach_db將數據庫加到服務器

sp_attach_db用法:
sp_attach_db
將數據庫附加到服務器

語法
sp_attach_db [ @dbname = ] dbname
[ @filename = ] filename_n [ ]

參數
[@dbname =] dbname

要附加到服務器的數據庫的名稱該名稱必須是唯一的dbname 的數據類型為 sysname默認值為 NULL

[@filename =] filename_n

數 據庫文件的物理名稱包括路徑filename_n 的數據類型為 nvarchar()默認值為 NULL最多可以指定 個文件名參數名稱以 @filename 開始遞增到 @filename文件名列表至少必須包括主文件主文件包含指向數據庫中其它文件的系統表該列表還必須包括數據庫分離後所有被移動的文件

返回代碼值
(成功)或 (失敗)

結果集


注釋
只應對以前使用顯式 sp_detach_db 操作從數據庫服務器分離的數據庫執行 sp_attach_db如果必須指定多於 個文件請使用帶有 FOR ATTACH 子句的 CREATE DATABASE

如果將數據庫附加到的服務器不是該數據庫從中分離的服務器並且啟用了分離的數據庫以進行復制則應該運行 sp_removedbreplication 從數據庫刪除復制

權限
只有 sysadmin 和 dbcreator 固定服務器角色的成員才能執行本過程  
From:http://tw.wingwit.com/Article/program/MySQL/201311/29555.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.