Sql-Server

維護計劃中的備份名稱

  • January 24, 2018

我曾經在我的伺服器上安裝了 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

以下是根據您的格式獲取數據庫備份的腳本。這可以通過 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

引用自:https://dba.stackexchange.com/questions/64617