Sql Server2005實現(xiàn)遠程備份數(shù)據(jù)庫
相信大家都在當心數(shù)據(jù)庫的丟失,這也是每個開發(fā)者頭痛的一件事件,因為正在運行的服務器及數(shù)據(jù)庫也在這臺服務器上。如果服務器崩潰,那么所有的數(shù)據(jù)都不存在了,就算是你在你的機子上做了備份,那也是沒有用的,為什么會這樣說主要是因為本機是向互聯(lián)網(wǎng)公開的,所以出事故的概率就比較高。最終我們可以利用局域網(wǎng)解決這樣的問題。就拿兩臺機子做例子,A機是服務器,B機是要把A服務器上的數(shù)據(jù)庫備份到B機上,前提是B機必須要有數(shù)據(jù)庫,以Sql Server2005為例。
首先A機必須具備數(shù)據(jù)庫,程序,IIS,B機必須具備數(shù)據(jù)庫,服務程序。前提是B機必須知道A機的機器密碼。
其次代碼操作如下 這只是存儲過程
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[BackSqlorFile]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
CREATE proc [dbo].[BackSqlorFile]
@ServerIp varchar(50),--數(shù)據(jù)庫服務器IP
@ServerName varchar(50),--數(shù)據(jù)庫計算機用戶
@ServerPwd varchar(50),--數(shù)據(jù)庫計算機用戶密碼
@ServerIISIp varchar(50),--IIs服務器Ip
@ServerIIsName varchar(50),--IIs服務器名稱
@ServerIIsPwd varchar(50),--IIs服務器密碼
@SqlShareFile varchar(50),--遠程sql共享文件
@IIsShareFile varchar(50),--遠程IIS共享文件
@MoveIIsPath varchar(50),--d:/back
@MoveSqlPath varchar(50),--d:/sql
@DataName varchar(50),--數(shù)據(jù)庫名稱
@SqlloginName varchar(50),--遠程數(shù)據(jù)庫登陸名稱
@SqlLoginPwd varchar(50)--遠程數(shù)據(jù)庫登陸密碼
as
begin
/*=====================================================================*/
--Create data 2007-05-21
--Modify data 2007-05-21
--Autor:sp
--Method:數(shù)據(jù)庫遠程備份、虛擬主機遠程備份、IIS遠程備份
/*====================================================================*/
declare @iisname varchar(1000)--備份IIS的名稱
declare @IISversion varchar(1000)--IIS版本號
declare @MovePath varchar(1000)--COPY文件的路勁
declare @IIsBack varchar(1000)--IIS備份命令
declare @IIsBackmd varchar(1000)--IIS備份為后綴的MD文件
declare @IIsBacksc varchar(1000)--IIS備份為后綴的SC文件
declare @SqlName varchar(1000)--備份數(shù)據(jù)庫名稱
declare @SqlPath varchar(1000)--備份數(shù)據(jù)庫文件路金
declare @IISyshe varchar(1000)--IIS網(wǎng)羅映射
declare @Sqlyshe varchar(1000)--sql網(wǎng)絡映射
declare @sqlback varchar(1000)---數(shù)據(jù)庫備份命令
declare @url varchar(1000)-- 數(shù)據(jù)庫遠程備份存放的路徑
declare @osql varchar(1000)--數(shù)據(jù)庫備份DOS操作命令
begin
--命名規(guī)則'文件名+月+日+年‘
set @SqlName=@DataName+replace(convert(varchar(50),getdate(),110),''-'','''')+''.bak''
set @url=''E:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/Backup/''+@SqlName
set @sqlback=''backup database ''+@DataName +'' to disk=''''''+@url+'''''' with init''
set @iisname=''IIs''+replace(convert(varchar(50),getdate(),110),''-'','''')
set @osql=''osql -S''+@ServerIp+'' -U''+@SqlloginName+'' -P''+@SqlLoginPwd+'' -dmaster -q"''+@sqlback+''"''
set @IISversion=''123''--//replace(convert(varchar(50),getdate(),120),'':'',''-)
set @IISBack=''iisback /Backup /s ''+@ServerIISIp+'' /u ''+@ServerIIsName+'' /p ''+@ServerIIsPwd+'' /b ''+@iisname+'' /v ''+@IISversion+''''--遠程備份IIS文件路勁
--其中 /S 代表遠程計算機名稱或者IP /U 代表用戶 /p 代表密碼 /b 代表備份名稱 /V 代表你所備份的版本號 /e 代表對備份文件進行加密
set @IIsBackmd=''copy y:/''+@iisname+''.MD''+@IISversion+'' ''+@MoveIIsPath+''''
set @IIsBacksc=''copy y:/''+@iisname+''.SC''+@IISversion+'' ''+@MoveIIsPath+''''
set @Sqlpath=''copy q:/''+@SqlName+'' ''+@MoveSqlPath+''''
set @IISyshe=''net use y: //''+@ServerIISIp+''/''+@IIsShareFile+'' "''+@ServerIIsPwd+''" /user:''+@ServerIISIp+''/''+@ServerIIsName+''''
set @Sqlyshe=''net use q: //''+@ServerIp+''/''+@SqlShareFile+'' "''+@ServerPwd+''" /user:''+@ServerIp+''/''+@ServerName+''''
exec master..xp_cmdshell @IISBack--遠程備份
exec master..xp_cmdshell @IISyshe --//建立網(wǎng)落映射IIS''
exec master..xp_cmdshell @IIsBackmd
exec master..xp_cmdshell @IIsBacksc
exec master..xp_cmdshell ''net use y: /delete''--刪除映射
exec master..xp_cmdshell @osql--遠程備份數(shù)據(jù)庫
exec master..xp_cmdshell @Sqlyshe--//建立網(wǎng)落映射數(shù)據(jù)庫''
exec master..xp_cmdshell @Sqlpath
exec master..xp_cmdshell ''net use q: /delete''--刪除映射
END
end
'
END
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Creat_Job]') AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
create proc [dbo].[Creat_Job]
@prorcname varchar(1000), --要調用定時調用的存儲過程名,如果不在當前庫中,則用:庫名..所有者名..存儲過程名
@job_date datetime --存儲過程的執(zhí)行時間(包括時間信息)
as
declare @dbname sysname,@jobname sysname,@date int,@time int
select @jobname=''作業(yè)_''+cast(newid() as varchar(36))
,@date=convert(varchar,@job_date,112)
,@time=replace(convert(varchar,@job_date,108),'':'','''')
if exists(select * from msdb..sysjobs where name=@jobname)
exec msdb..sp_delete_job @job_name=@jobname
--創(chuàng)建作業(yè)
exec msdb..sp_add_job @job_name=@jobname,@delete_level=0
--創(chuàng)建作業(yè)步驟
declare @sql varchar(1000)
select @sql=''exec ''+@prorcname
,@dbname=db_name()
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = ''執(zhí)行步驟'',
@subsystem = ''TSQL'',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數(shù)
@retry_interval = 5 --重試間隔
--創(chuàng)建調度
EXEC msdb..sp_add_jobschedule @job_name = @jobname,
@name = ''時間安排'',
@enabled = 1,
@freq_type = 4, --代表每天都執(zhí)行
@active_start_date = @date,
@active_start_time = @time,
@freq_interval =1--至少一次
-- 添加目標服務器
EXEC msdb.dbo.sp_add_jobserver
@job_name = @jobname ,
@server_name = N''(local)''
'
END
同時也備份IIS,并且通過網(wǎng)絡映射,這樣的結果是在A機上也有備份的文件,在B機上也有相同的備份文件。在此也利用了作業(yè)的操作。
注意:Sql Server2005默認的情況下是沒有打開xp_cmdshell這個是系統(tǒng)存儲過程,
所以我們必須打開它 EXEC sp_configure 'show advanced options', 1,然后在運行RECONFIGURE 再一次運行EXEC sp_configure 'xp_cmdshell', 1,最后RECONFIGURE。
- 設定sql server定期自動備份數(shù)據(jù)庫
- mssql無數(shù)據(jù)庫日志文件恢復數(shù)據(jù)庫的方法
- sqlserver 日志恢復方法(搞定drop和truncate)
- SQLServer 2005 自動備份數(shù)據(jù)庫的方法分享(附圖解教程)
- SQLServer2005 沒有日志文件(*.ldf) 只有數(shù)據(jù)文件(*.mdf) 恢復數(shù)據(jù)庫的方法
- SQL Server 作業(yè)的備份(備份作業(yè)非備份數(shù)據(jù)庫)
- SQL server 2008 數(shù)據(jù)安全(備份和恢復數(shù)據(jù)庫)
- SQL Server誤區(qū)30日談 第28天 有關大容量事務日志恢復模式的誤區(qū)
- centos中mysql備份數(shù)據(jù)庫腳本分享
- mysql二進制日志文件恢復數(shù)據(jù)庫
- SQL Server 2008 備份數(shù)據(jù)庫、還原數(shù)據(jù)庫的方法
- SQL Server恢復模型之批量日志恢復模式
- SQL Server 2005恢復數(shù)據(jù)庫詳細圖文教程
- SqlServer備份數(shù)據(jù)庫的4種方式介紹
- SQL Server無日志恢復數(shù)據(jù)庫(2種方法)
相關文章
sqlserver2005 安裝圖解教程以及SQL 2005 SP3補丁安裝圖文教程
最近整理一些sql2005的安裝教程,好多朋友慢慢開始使用sql2005,進行開發(fā)了,嘗試新事物。2009-08-08sqlserver2005使用row_number() over分頁的實現(xiàn)方法
sqlserver2005使用row_number() over分頁的實現(xiàn)方法,需要的朋友可以參考下。2011-11-11SQL Server 2005 數(shù)據(jù)庫復制詳細介紹
這篇文章主要介紹了SQL Server 2005 數(shù)據(jù)庫復制技術,有時候我們需要將數(shù)據(jù)庫備份一份到別的服務器上,防止突發(fā)情況2014-08-08SQL2008中SQL應用之-鎖定(locking) 應用分析
鎖定(Locking)是一個關系型數(shù)據(jù)庫系統(tǒng)的常規(guī)和必要的一部分,它防止對相同數(shù)據(jù)作 并發(fā)更新 或在更新過程中查看數(shù)據(jù), 從而保證被更新數(shù)據(jù)的完整性。它也能防止用戶讀取正在被修改的數(shù)據(jù) 。2011-06-06SQL2005CLR函數(shù)擴展-繁簡轉換的實現(xiàn)代碼
本篇文章是對繁簡轉換的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下2013-06-06sql2005 數(shù)據(jù)庫轉為sql2000數(shù)據(jù)庫的方法(數(shù)據(jù)導出導入)
今天一網(wǎng)友問我如何將sql2005數(shù)據(jù)庫轉換為sql2000,因為sql2005不如用sql2000更簡單與熟悉,其實就是通過數(shù)據(jù)導出導入的方法即可,這里分享下方便需要的朋友2012-11-11Sql Server 2005的1433端口打開局域網(wǎng)訪問和進行遠程連接
在實際項目中,我們經(jīng)常會遇到需要局域網(wǎng)訪問或者需要外網(wǎng)訪問甚至是兩者都需要的數(shù)據(jù)庫搭建,那么應該如何來處理呢,我們來一一探討下2014-08-08