web-dev-qa-db-fra.com

Puis-je arrêter une sauvegarde de base de données SQL après avoir déjà commencé?

Je cherche à faire une sauvegarde de la base de données complète d'une base de données SQL dans SQL Server 2008.

Mes questions sont:

  • Puis-je arrêter, mettre en pause ou annuler la sauvegarde après avoir commencé si cela prend trop de temps ou de ralentir trop de choses? Est une sauvegarde juste un travail que je voudrais juste arrêter le travail ?
  • Lorsque vous faites une sauvegarde, êtes-vous capable de voir les progrès et de voir une durée d'achèvement estimée de la sauvegarde? Si oui, comment affichez-vous ses progrès?
5
kyle_13

Droit pour répondre à vos questions:

Puis-je arrêter, mettre en pause ou annuler la sauvegarde après avoir commencé si cela prend trop de temps ou de ralentir trop de choses?

Vous ne pouvez pas suspendre une sauvegarde - soit en cours d'exécution à l'aide de TSQL ni d'utiliser le travail de l'agent SQL. Si votre dB est en miroir, alors lorsque vous basculez, la sauvegarde est tuée.

Depuis que vous êtes sur SQL Server 2008, j'ai récemment couru dans une situation étrange qui a causé une panne de l'une de nos applications critiques est que si vous n'êtes pas sur le dernier SP (2008 SP4) - nous Exécutez SP1 sur le nœud qui avait un bogue et a été corrigé dans SP1 + CU4 - il a été résolu dans CU4 pour SP1: https://support.microsoft.com/en-us/help/973602 . Rechercher, "970133" Pour: Correction: Lorsque vous créez une sauvegarde compressée pour une base de données dans SQL Server 2008, vous ne pouvez pas arrêter l'opération de sauvegarde si l'opération de sauvegarde cesse de répondre.

Vous pouvez l'arrêter ou le tuer en utilisant le kill spid commande.

vous devez être prudent comme si vous tuez un emploi qui est déjà en cours, il doit ROLLBACK qui prendra un peu ou plus.

Une sauvegarde est-elle juste un travail, que je voudrais juste arrêter le travail?

Dépend de la façon dont vous exécutez la sauvegarde. Si vous l'exécutez à l'aide de SQL Agent Job, alors son travail que vous pouvez STOP ou si vous l'exécutez directement à partir de SSMS ou SQLCMD, vous pouvez alors vous pouvez CANCEL ou KILL la commande.

Lorsque vous faites une sauvegarde, êtes-vous capable de voir les progrès et de voir une durée d'achèvement estimée de la sauvegarde? Si oui, comment affichez-vous ses progrès?

Vous pouvez utiliser DMVS pour surveiller la progression de la sauvegarde (ou de la restauration) (si vous n'utilisez pas WITH STATS = number):

----- find out the ETA time for restore and backup progress

SELECT command,
            s.text,
            start_time,
            percent_complete, 
            CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
                  + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
                  + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
            CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
                  + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
                  + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
            dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time 
FROM sys.dm_exec_requests r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) s
WHERE r.command in ('RESTORE DATABASE', 'BACKUP DATABASE', 'RESTORE LOG', 'BACKUP LOG')

Quelques aliments pour les pensées:

10
Kin Shah