Подтвердить что ты не робот

Добавить дату в базу данных SQL backup имя файла

Я использую ниже для резервного копирования db из задания SQL. Может ли кто-нибудь сказать мне, как добавить текущую дату в выходное имя файла? Предпочтительно в формате YYYYMMDD.

BACKUP DATABASE [myDB] TO  DISK = N'\\myPath\myDB.bak' WITH NOFORMAT, INIT,  NAME = N'myDB', SKIP, REWIND, NOUNLOAD,  STATS = 10
GO

Спасибо!

4b9b3361

Ответ 1

DECLARE @MyFileName varchar(1000)

SELECT @MyFileName = (SELECT '\\ServerToSave\Path\MyDB_' + convert(varchar(500),GetDate(),112) + '.bak') 

BACKUP DATABASE [myDB] TO [email protected] ...

Ответ 2

Если вы хотите указать дату и время, вы можете использовать:

DECLARE @MyFileName varchar(200)
SELECT @MyFileName='\\ServerToSave\Path\MyDB_' + REPLACE(convert(nvarchar(20),GetDate(),120),':','-') + '.bak'
BACKUP DATABASE [myDB] TO [email protected] ...

120 в Convert дает вам гггг-мм-дд чч: ми: сс (24 ч)

Функция REPLACE необходима, потому что имя файла не может иметь символ :.

Ответ 3

Попробуйте это.

DECLARE @MyFileName varchar(50)
SELECT '\\ServerToSave\Path\MyDB_' + convert(nvarchar(20),GetDate(),112) + '.bak'
BACKUP DATABASE [myDB] TO [email protected] ...

112 в Convert предоставляет вам формат YYYYMMDD

Ответ 4

Используйте следующие

DECLARE @BackupFileName varchar(20)

SELECT @BackupFileName = '\\ServerName\SharedFolder\DatabaseName_' + CONVERT (VarChar, GetDate(), 112) + '.bak'

BACKUP DATABASE [myDB] TO  DISK = @BackupFileName WITH NOFORMAT, INIT,  NAME = N'myDB', SKIP, REWIND, NOUNLOAD,  STATS = 10

Прочитайте о том, как включить и конвертировать здесь http://msdn.microsoft.com/en-us/library/ms187928.aspx

Ответ 5

Может быть, вы хотите использовать задачу Windows, просто поместите код в bat файл и добавьте в свои задачи Windows:

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "fullstamp=%YYYY%%MM%%DD%-%HH%%Min%%Sec%"
set bkfile=dbname%fullstamp%.bak
set path_sqlcmd="C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\SQLCMD.exe"

%path_sqlcmd% -S .\SQLEXPRESS -E -Q "BACKUP DATABASE seteo TO DISK='D:\bk-sqlserver\%bkfile%' WITH FORMAT"

Это немного долго, но я думаю, что это практическое решение, если вам нужна резервная копия SQL Server 2005 или старых версий, просто измените sqlcmd на osql.

Ответ 6

DECLARE @var nvarchar(max) ='C:\Projects\myDatabase ' +replace(rtrim(convert(char,getdate())), ':',',')+'.bak';
BACKUP DATABASE myDatabase TO DISK = @var

выход:

C:\Projects\myDatabase 3 июня 2015 г. 6,33AM.bak

Ответ 7

Вы можете использовать любой из них. Это образец даты и даты использования в резервной базе данных:

SELECT 'TestDb' + '_'+CAST(CAST(GETDATE() AS datetime2) AS NVARCHAR(22))+ 
'_Log.trn';--TestDb_2019-09-28 13:54:42.54_Log.trn

SELECT 'TestDb' + '_'+CAST(CAST(GETDATE() AS DATE) AS NVARCHAR(MAX))+ 
'_Log.trn';--TestDb_2019-09-28_Log.trn

SELECT 'TestDb' + '_'+CAST(sysdatetime() as nvarchar(max))+ '_Log.trn';--TestDb_2019-09-28 13:54:42.5536994_Log.trn

SELECT 'TestDb'+'_' + convert(varchar(500),GETDATE(),120) + '_Log.trn';--TestDb_2019-09-28 13:54:42_Log.trn

SELECT 'TestDb'+'_' + convert(varchar(500),GETDATE(),112) + '_Log.trn';--TestDb_20190928_Log.trn

SELECT 'TestDb' + '_'+CAST(FORMAT(getdate(), N'yyyy-MM-ddThh:mm:ss') as nvarchar(max))+ '_Log.trn';--TestDb_2019-09-28T02:08:38_Log.trn