Я пишу веб-приложение, которое отслеживает резервное копирование и восстановление, пока они происходят. Меня попросили добавить к нему способ показать путь к резервной копии \ восстановлению и имя файла , как это происходит .
Я могу, конечно, получить командную строку, которая выполняется во время резервного копирования \ восстановления, поэтому я хотел бы извлечь путь и имя файла из этой командной строки.
Так что с моим текущим кодом я могу получить это в виде возврата:
BACKUP DATABASE [DatabaseName] TO DISK = N'\\nas01\sqlbackups$\ServerName\DatabaseName.bak' WITH NOFORMAT, INIT, NAME = N'DatabaeName-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
Из этого я хотел бы извлечь \\ nas01 \ sqlbackups $ \ ServerName \ DatabaseName.bak
Если нет извлечения из кода, есть ли способ извлечь его из другой таблицы, во время его работы?
Это код, который я запускаю, чтобы получить состояние текущей резервной копии \ восстановления:
SELECT r.session_id
,r.command
,CONVERT(NUMERIC(6, 2), r.percent_complete) AS [Percent Complete]
,CONVERT(VARCHAR(20), DATEADD(ms, r.estimated_completion_time, GetDate()), 20) AS [ETA Completion Time]
,CONVERT(NUMERIC(10, 2), r.total_elapsed_time / 1000.0 / 60.0) AS [Elapsed Min]
,CONVERT(NUMERIC(10, 2), r.total_elapsed_time / 1000.0 / 60.0 / 60.0) AS [Elapsed Hours]
,CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0) AS [ETA Min]
,CONVERT(NUMERIC(10, 2), r.estimated_completion_time / 1000.0 / 60.0 / 60.0) AS [ETA Hours]
,CONVERT(VARCHAR(1000), (
SELECT SUBSTRING(TEXT, r.statement_start_offset / 2, CASE
WHEN r.statement_end_offset = - 1
THEN 1000
ELSE (r.statement_end_offset - r.statement_start_offset) / 2
END)
FROM sys.dm_exec_sql_text(sql_handle)
)) AS [TSQLCode]
FROM sys.dm_exec_requests r
WHERE command IN (
'RESTORE DATABASE'
,'BACKUP DATABASE'
,'BACKUP LOG'
,'RESTORE LOG'
)