Pregunta ¿Existe un script SQL que pueda usar para determinar el progreso de un proceso de copia de seguridad o restauración de SQL Server?


Cuando hago una copia de seguridad o restauro una base de datos usando MS SQL Server Management Studio, obtengo una indicación visual de cuánto ha progresado el proceso y, por lo tanto, cuánto tiempo más necesito esperar a que termine. Si comienzo la copia de seguridad o la restauración con un guión, ¿hay alguna manera de controlar el progreso, o simplemente me siento y espero que termine (esperando que nada haya salido mal)?

Editado: Mi necesidad es específicamente poder monitorear la copia de seguridad o restaurar el progreso completamente separado de la sesión donde se inició la copia de seguridad o restauración.


82
2017-09-30 09:59


origen


Respuestas:


Sí. Si tienes instalado sp_who2k5 en su base de datos maestra, simplemente puede ejecutar:

sp_who2k5 1,1

El conjunto de resultados incluirá todas las transacciones activas. Las copias de seguridad actualmente en ejecución contendrán la cadena "BACKUP" en el requestCommand campo. El acertadamente llamado Porcentaje completo campo le dará el progreso de la copia de seguridad.

Nota: sp_who2k5 debe ser parte de la caja de herramientas de todos, hace mucho más que solo esto.


8
2017-10-01 03:22



Encontré este script de muestra aquí eso parece estar funcionando bastante bien:

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.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 [SQL]
FROM sys.dm_exec_requests r WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE')

194
2017-09-30 10:08



Si conoce el ID de sesión, puede usar lo siguiente:

SELECT * FROM sys.dm_exec_requests WHERE session_id = 62

O si quieres restringirlo:

SELECT command, percent_complete, start_time FROM sys.dm_exec_requests WHERE session_id = 62

10
2018-06-30 00:31



Use STATS en el comando BACKUP si solo es un script.

El código interno es un poco más complicado. En ODBC, por ejemplo, establece SQL_ATTR_ASYNC_ENABLE y luego busca SQL_STILL_EXECUTING código de retorno, y realiza algunas llamadas repetidas de SQLExecDirect hasta que obtenga un SQL_SUCCESS (o eqiv).


4
2017-09-30 10:14



SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time 
FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')

4
2017-12-15 10:54



Use la opción STATS: http://msdn.microsoft.com/en-us/library/ms186865.aspx


3
2017-09-30 10:06



Aquí hay un script simple que generalmente me funciona:

SELECT command, percent_complete,total_elapsed_time, estimated_completion_time, start_time
  FROM sys.dm_exec_requests
  WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE') 

3
2017-10-19 13:23



Creo que la mejor forma de averiguar cómo está el progreso de restauración o copia de seguridad es mediante la siguiente consulta:

USE[master]
GO
SELECT session_id AS SPID, command, a.text AS Query, start_time, percent_complete, dateadd(second,estimated_completion_time/1000, getdate()) as estimated_completion_time 
    FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) a 
        WHERE r.command in ('BACKUP DATABASE','RESTORE DATABASE')
GO

La consulta anterior, identifica la sesión por sí mismo y realiza un progreso porcentual cada vez que presionas F5 o el botón Ejecutar en SSMS.

La consulta fue realizada por el tipo que escribe esto enviar 


3
2018-04-11 18:13