[SQL]手動設定SQL排程備份

  • 9816
  • 0
  • SQL
  • 2010-07-07

摘要:[SQL]手動設定SQL排成備份

常常會遇到客戶要用免費版的SQL Server,

這時會遇到一個狀況是無法排程備份,

但是用另一種方式卻可以達到同樣的效果,

首先在要備份的Server下執行一個Procedure,

USE [master]  
GO  
SET ANSI_NULLS ON  
GO  
SET QUOTED_IDENTIFIER ON  
GO  
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

 有個要注意的地方是Procdure中的C:\Backup\,可以改成要備份的目錄夾,記得要先建立資料夾,然後執行這個Procedure,

接著建立一個SQL Script,在此範例為Backup.sql,裡面內容如下:

sp_BackupDatabase '資料庫名稱', 'F'
GO
QUIT

接下來就是新增排程的方法,

(1)「開始\所有程式\附屬應用程式\系統工具\排定的工作」,新增一個新的排程,按「下一步」

 

 

(2)隨意選擇任一個應用程式

 

(3)選擇排程名稱和執行的區間

 

(4)設定執行時間

 

(5)會要求輸入帳號密碼,這裡就自行設定了

 

(6)再來這裡才是重點,當新增完成後,再去對已新增的排程按兩下滑鼠左鍵,如圖

這裡分成兩部分處理(如圖示的1,2),

1.要把server名稱打上,而後面的D:\DB_BACKUP\Backup.sql,則為前面存放那個SQL Script的位置

2.開始的位置則為SQL執行工具的位置,需檢查一下是否與本機相同

 

sqlcmd -S Server名稱 -E -i D:\DB_BACKUP\Backup.sql

"C:\Program Files\Microsoft SQL Server\90\Tools\Binn"

若要測試是否成功,可以對那個排程按下滑鼠右鍵,選「執行」,若有產生備份檔,就表示成功