2014年4月15日火曜日

sql express backup

SQLをmasterで実行

CREATE PROCEDURE MYDATABASE_BACKUP
AS
BEGIN
DECLARE @BACKUPTOPPATH NVARCHAR(1024)
DECLARE @WEEKOFDAY NVARCHAR(10)

SELECT
@BACKUPTOPPATH=
'C:\askc\SQLBackup'
-- バックアップ格納先フォルダを指定(自分の環境に合うように修正ください)
,@WEEKOFDAY = CASE DATEPART(WEEKDAY, GETDATE())
WHEN 1 THEN 'SUN'
WHEN 2 THEN 'MON'
WHEN 3 THEN 'TUE'
WHEN 4 THEN 'WED'
WHEN 5 THEN 'THU'
WHEN 6 THEN 'FRI'
WHEN 7 THEN 'SAT' END
DECLARE @DBNAME NVARCHAR(1024)
DECLARE @WORK_BACKUPPATH NVARCHAR(1024)
DECLARE @MEDIANAME NVARCHAR(1024)
DECLARE @SQLCMD NVARCHAR(MAX)

DECLARE cursor1 cursor FOR
select name from sys.databases where name <> 'tempdb';
-- sys.databaseを呼び出して、データベース名を列挙します。
-- tempdbは、バックアップ対象外です。msdb, modelなどのシステムDBもバックアップします
OPEN cursor1
FETCH NEXT FROM cursor1 INTO @DBNAME

WHILE(@@FETCH_STATUS = 0 )
BEGIN
SELECT @WORK_BACKUPPATH=@BACKUPTOPPATH +'\'+ @WEEKOFDAY +'\' + @DBNAME +'.bak'
, @MEDIANAME = 'PATH_OF_FIXED_'+@WEEKOFDAY+'_'+@DBNAME
SELECT @SQLCMD =
'USE ' + @DBNAME + ';'
+ 'BACKUP DATABASE ' + @DBNAME +' '
+ ' TO DISK = '''+@WORK_BACKUPPATH+''''
+ ' WITH FORMAT, MEDIANAME = '''+@MEDIANAME+''','
+ ' NAME = ''Full Backup '+ @WEEKOFDAY +' ' + @DBNAME +''';'
EXECUTE SP_EXECUTESQL @SQLCMD
FETCH NEXT FROM cursor1 INTO @DBNAME
END
CLOSE cursor1
DEALLOCATE cursor1

END

タスクスケジュールで、以下のコマンドを追加
プログラム実行: sqlcmd
パラメータ: -S .\SQLExpress -E -Q "EXEC MYDATABASE_BACKUP"

0 件のコメント:

コメントを投稿