web-dev-qa-db-ja.com

Ola Hallengrenメンテナンススクリプト-バックアップファイルがまだ書き込まれていることを確認するにはどうすればよいですか?

私の質問は、まだ書き込まれているバックアップファイルを識別する方法があるかどうかです。完了したバックアップファイルを別の場所にコピーしたいと思います。バックアップ拡張機能を読み取ることにより、完了したバックアップファイルとまだ書き込まれているバックアップファイルを区別できません。助言がありますか?

3
user130268

POWERSHELLCOPY-ITEMコマンドレット。

現在使用中のファイルはスキップされます。

$ErrorActionPreference = 'SilentlyContinue'ファイルがロックされているためにエラーが表示されないようにします。

powershell.exe "$ErrorActionPreference = 'SilentlyContinue';Copy-Item 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\*.bak' c:\TestOut
2
Scott Hodgin

Adam Machanic氏によって書かれた手順 sp_whoisactive を使用できると思います。この手順は、現在SQLテキスト列で実行されているコマンドを明確に示しています。バックアップするデータベースのセットがある場合は、現在実行中のデータベースを確認できます。バックアップを取得するためにOla Hallengrenのスクリプトに従っているため、バックアップはアルファベット順で行われ、DBA_Maintenanceバックアップが現在実行されている場合、database1が既に完了していることを意味します。

または、以下のスクリプトを使用して、完了率とETA完了時間の詳細を以下のように取得できます。

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

これは link でも説明されています。

これについては、Pinal Dave氏のページを参照することもできます について

お役に立てれば。

1