Sql Server遠端還原

haoge0205發表於2014-02-11
1、假裝置份檔案xxxx.bak大小約300G,還原後所佔用的空間為900G

2、磁碟空間只有1T,若將備份檔案複製過來,空間剩餘700G,無法成功還原,因此透過遠端方式還原。


例子如下:

SQLSERVER服務例項名稱: 192.168.12.163
需要備份的資料庫名稱:  a
備份機器名稱(Client端): 192.168.12.30
備份機使用者:  administrator  密碼: 123
備份機域名: B28-1230 
備份機提供備份需求的資料夾:D:\backup


備份資料庫
第一步: 在備份機建立共享資料夾
在程式程式碼中呼叫(或者CMD視窗)
net share sqlbakup=D:\backup 或者用NetShareAdd這個API
簡要說明:
net share:是WINDOWS內部的網路命令。
作用:建立本地的共享資源,顯示當前計算機的共享資源資訊。
第二步: 建立共享信用關係
exec master..xp_cmdshell 'net use \\192.168.12.30\backup 123 /user:B28-1230\Administrator'


若報錯提示這個:“SQL Server 阻止了對元件'xp_cmdshell' 的過程'sys.xp_cmdshell' 的訪問,因為此元件已作為此伺服器安全配置的一部分而被關閉。
系統管理員可以透過使用sp_configure 啟用'xp_cmdshell'。有關啟用'xp_cmdshell' 的詳細資訊,請參閱SQL Server 聯機叢書中的"外圍應用配置器"。”


啟用’xp_cmdshell’:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure   'show advanced options', 0
RECONFIGURE WITH OVERRIDE


關閉’xp_cmdshell’:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
EXEC sp_configure 'xp_cmdshell', 0
RECONFIGURE WITH OVERRIDE
EXEC sp_configure   'show advanced options', 0
RECONFIGURE WITH OVERRIDE


開啟’xp_cmdshell’後再執行建立信用關係:
exec master..xp_cmdshell 'net use \\192.168.12.30\backup 123 /user:B28-1230\Administrator'  


還原備份庫a:
restore database peking from disk = '\\192.168.12.30\backup\a.bak'
with move 'a_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\a.mdf',
move 'a_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\a_log.ldf'


使用 SQL Server restore filelistonly 命令來檢視邏輯檔名
restore filelistonly from disk='\\192.168.12.30\backup\a.bak'


restore with move 用法:

restore database Northwind from disk = 'c:\Northwind.bak'
with move 'Northwind'     to 'd:\microsoft sql server\mssql.1\mssql\data\Northwind.mdf'
    ,move 'Northwind_log' to 'd:\microsoft sql server\mssql.1\mssql\data\Northwind.ldf'

 

 

簡要說明:
1:xp_cmdshell :是SQLSERVER的擴充套件儲存過程。
作用:以作業系統命令列直譯器的方式執行給定的命令字串, 並以文字行方式返回任何輸出。
語法:參見SQLSERVER聯機幫助

2:net use : 是WINDOWS內部的網路命令。
作用:將計算機與共享資源連線或斷開,或者顯示關於計算機連線的資訊。
該命令還控制持久網路連線。

3:備份資料庫
backup database a to disk='\\192.168.12.30\sqlbak\a.bak'
backup database a to disk='\\192.168.12.30\sqlbak\a1.bak' WITH DIFFERENTIAL (差異備份)

4: 刪除共享資料夾
在程式程式碼中呼叫(或者CMD視窗) net share sqlbakup/delete
或者用NetShareDel這個API
恢復資料庫
restore database a from disk='\\192.168.12.30\backup\a.bak'


以下是差異還原
restore database scs from disk='\\192.168.12.30\backup\a.bak' WITH NORECOVERY
restore database scs from disk='\\192.168.12.30\backup\a1.bak' WITH NORECOVERY
restore database scs from disk='\\192.168.12.30\backup\a2.bak'

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1079449/,如需轉載,請註明出處,否則將追究法律責任。

相關文章