SqlServerExpress2005 自動備份

iSQlServer發表於2010-11-23
眾所周知SqlServerExpress2005 屬於簡裝版,安裝程式五六十兆,在客戶的伺服器上部署時很暢快。但該資料庫無Agent這樣對我們進行定時備份保護資料安全帶來了麻煩。為了定時備Express2005資料庫,可以採取以下方案:

    1.編寫WindowsService,在服務內呼叫備份資料庫方法。

    2.使用Windows自帶的計劃任務。(推薦使用)。 

   下面就由我來介紹一下如何用計劃任務實現資料庫備份的,操作步驟如下:

     1. 首先建立一個windows任務計劃,開啟任務計劃嚮導,選擇指定的的exe檔案,該檔名為SQLCMD.EXE,位於x:\Program Files\Microsoft SQL Server\90\Tools\Binn 目錄下。

     2.然後選擇執行週期,假設選擇每天上午9點,接著輸入Windows使用者名稱和密碼。

     3.在任務計劃嚮導完成前勾選 “在單擊完成時,開啟此任務的高階屬性”這個CheckBox。

     4.修改執行命令為:sqlcmd -S .\SQLEXPRESS -E -i e:\Backup\Backup.sql

           注:.\SQLEXPRESS 是你的資料庫例項, e:\Backup\Backup.sql 磁碟位置可任意更改。Backup.sql 檔案內容為:

exec [sp_BackupDatabase] '需要備份的資料庫名','F'
go

6.在你Master資料庫內執行該段儲存過程,該儲存過程被Windows計劃呼叫。

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt-- =============================================
--
Author: RyanDing
--
Create date: 2010-10-10
--
Description: 備份資料庫
--
Parameter1: 資料庫名
--
Parameter2: 備份型別 F=全部, D=差異, L=日誌
--
=============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName sysname, @backupType CHAR(1)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @dateTime NVARCHAR(20)

SELECT @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),111),'/','') +
REPLACE(CONVERT(VARCHAR, GETDATE(),108),':','')

IF @backupType = 'F'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Full_' + @dateTime + '.BAK'''

IF @backupType = 'D'
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Diff_' + @dateTime + '.BAK'' WITH DIFFERENTIAL'

IF @backupType = 'L'
SET @sqlCommand = 'BACKUP LOG ' + @databaseName +
' TO DISK = ''C:\Backup\' + @databaseName + '_Log_' + @dateTime + '.TRN'''

EXECUTE sp_executesql @sqlCommand
END
go

執行計劃任務後 檢視C盤Backup目錄下生成的bak資料庫備份檔案。

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

相關文章