web-dev-qa-db-ja.com

保守計画のバックアップ名

以前はサーバーにSQL Server 2005をインストールしていました。私の保守計画では、バックアップ名の形式は次のようでした:mydatabase_backup_yyyymmddhhss.bak

現在、SQL Server 2012を使用していますが、まったく異なるバックアップ名の形式を取得しています。 2005と同じフォーマット名にしたいのですが。

これどうやってするの?

3
Scorpion99

動的SQLを使用して.bakファイルの名前を作成するカスタムバックアップスクリプトを作成する必要があります。保守計画では、「T-SQLステートメントタスクの実行」項目を使用してこれを実行できます。

T-SQLは次のようになります。

Select @SQL = 'BACKUP DATABASE [' + @DBName + '] TO  DISK = N''' + @Path + '\' + @DBName + '_backup_' + @Date + '.bak'' WITH NOFORMAT, INIT,  NAME = N''' + @DBName + '_backup_' + @Date + ''', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10 '

EXEC SP_ExecuteSql @SQLToExecute = @SQL
1
James Anderson

以下は、フォーマットごとにDBバックアップを取得するスクリプトです。これはSQLエージェントジョブでスケジュールできます。

DECLARE @FOLDERPATH VARCHAR(500)
DECLARE @FOLDERPATHWITHNAME VARCHAR(500)
Declare @NAME Varchar(200)
Declare @DATE Varchar(200)
Declare @TIME Varchar(200)
Declare @TIME1 Varchar(200)

-------------------------------------------------------    
--JUST NEED TO UPDATE BELOW PATH FOR DB BACKUP LOCATION
-------------------------------------------------------

Set @FOLDERPATH = 'D:\Temp\Dsingh\'

select @TIME1 = Convert(time, getdate())

select @DATE = (select convert(varchar,getDate(),112))

select @TIME = ((select Convert(Varchar, DATEPART(hh, @TIME1))) 
               + (Select CONVERT(Varchar, DATEPART(ss, @TIME1))))

Select @NAME = 'mydatabase_backup' + '_' + @DATE + @TIME

Set @FOLDERPATHWITHNAME = @FOLDERPATH + @NAME + '.bak'

EXECUTE master.dbo.xp_create_subdir @FOLDERPATH

BACKUP DATABASE [TEST_1_Smarttrack_03202014] 
       TO  DISK = @FOLDERPATHWITHNAME WITH NOFORMAT, NOINIT,  
       NAME = @NAME, SKIP, REWIND, NOUNLOAD,  STATS = 10
1
dsingh