一,如何建立串連伺服器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','遠程伺服器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'使用者名稱','密碼'
go
二,利用命令和本地的bak檔案恢複遠端資料庫,步驟:
1,建立共用資料夾,將存放bak檔案的檔案夾設為共用資料夾
net share ShareFolder=D:\tmp\db.bak 該命令可以通過C#來調用
如果要不共用,可以這樣寫
net share ShareFolder /delete
2,啟用xp_cmdshell,sql server 2005/2008 預設是禁用此預存程序的。
--啟用
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
--如果要禁用可以這樣寫
sp_configure 'xp_cmdshell',0
reconfigure
sp_configure 'show advanced options',0
reconfigure
3,建立共用信用關係,userName,pwd是登入192.224.109.64 這台機器的使用者名稱和密碼。
EXEC xp_cmdshell 'net use \\192.224.109.64\ShareFolder pwd /user:userName';
GO
EXEC xp_cmdshell 'net use \\192.224.109.64\ShareFolder /del';
GO
第二句是如何撤消共用信用關係的。
4,執行恢複命令
恢複資料庫
restore database [dbName] from disk=N'\\192.224.109.64\ShareFolder\db.bak' WITH FILE = 1, move N'dbnew' to N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\db.mdf', move N'dbnew_log' to N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\dblog.ldf',NOUNLOAD, REPLACE, STATS = 10
dbnew,dbnew_log 是備份時的資料庫名和記錄檔名。
其中,如下語句
select REVERSE (SUBSTRING(reverse(filename),charindex('\',reverse(filename)),8000)),name from sysfiles
可以擷取sql server 資料檔案,記錄檔的存放路徑。
5,執行完畢後做一些相反操作即可,比如禁用xp_cmdshell,撤消共用信用關係,取消檔案夾共用等。