以前はサーバーにSQL Server 2005をインストールしていました。私の保守計画では、バックアップ名の形式は次のようでした:mydatabase_backup_yyyymmddhhss.bak
。
現在、SQL Server 2012を使用していますが、まったく異なるバックアップ名の形式を取得しています。 2005と同じフォーマット名にしたいのですが。
これどうやってするの?
動的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
以下は、フォーマットごとに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