สำหรับท่านที่ต้องการสำรองข้อมูลของฐานข้อมูล SQL Server โดยสำรองแล้วตั้งชื่อตามวันในสัปดาห์ ก็สามารถสร้าง Stored Procedure ไว้ภายใต้ฐานข้อมูล master ตามตัวอย่างด้านล่าง
USE master
GO
/*
Programmer : Kasem K.
Create : 12/11/2006
-- Execute the generated SQL command
Sample
======
EXEC sp_BackupDatabase
@databaseName='yourDatabaseName',
@backupType='F',
@backupLocation='D:\BackupFolder'
GO
*/
CREATE PROCEDURE [dbo].[sp_BackupDatabase]
@databaseName varchar(300),
@backupType CHAR(1), -- F = full bakcup D = difference backup
@backupLocation nvarchar(200)
AS
DECLARE @BackupName varchar(200)
DECLARE @BackupFile varchar(200)
DECLARE @sqlCommand nvarchar(4000)
DECLARE @DayOfWeek varchar(10)
SET @DayOfWeek = DATENAME(dw,GETDATE())
-- Create backup filename in path\filename.extension format for full and diff backups
-- Generate the dynamic SQL command to be executed
IF @backupType = 'F'
BEGIN
SET @BackupFile = @backupLocation + '\' +
REPLACE(REPLACE(@databaseName, '[',' '),']',' ') +
'_' + @dayOfWeek + '.BAK'
SET @BackupName = REPLACE(REPLACE(@databaseName,'[',' '),']',' ') +
' full backup for ' + @DayOfWeek
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''' + @BackupFile + '''' +
' WITH INIT, NAME = ''' + @BackupName + '''' +
', NOSKIP, NOFORMAT'
-- ใช้ INIT: สร้างไฟล์ใหม่ทับไฟล์เดิม
-- ใช้ NOFORMAT: เก็บแบ็กอัพใหม่เพิ่มเข้าไปใน media set เดิม
-- ใช้ FORMAT: สร้าง media set ใหม่ ลบข้อมูลเดิมออก
EXEC(@sqlCommand)
END
ELSE IF @backupType = 'D'
BEGIN
SET @BackupFile = @backupLocation + '\' +
REPLACE(REPLACE(@databaseName, '[',' '),']',' ') +
'_' + @DayOfWeek + '.BAK'
SET @BackupName = REPLACE(REPLACE(@databaseName,'[',' '),']',' ') +
' differential backup for '+ @DayOfWeek
SET @sqlCommand = 'BACKUP DATABASE ' + @databaseName +
' TO DISK = ''' + @BackupFile + '''' +
' WITH INIT, NAME = ''' + @BackupName + '''' +
', NOSKIP, NOFORMAT'
EXEC(@sqlCommand)
END
ไม่มีความคิดเห็น:
แสดงความคิดเห็น