簡體   English   中英

通過Powershell檢查SQL備份何時失敗

[英]Check when SQL backup failes via Powershell

運行sql備份時是否可以捕獲信息? 如果備份失敗了? 我使用MSSQL和Powershell

該查詢將為您提供有關備份的信息,包括上次執行時間。 它不會顯示備份是否失敗,因為失敗的備份未列為備份。 您應該在工作概述或歷史記錄中找到這些內容。 如果使用powershell,則不會記錄失敗備份的日志。 (我所知道的)

Sequenchel(.com)中也使用此查詢來監視備份

SELECT isnull(y.server_name,CAST(SERVERPROPERTY('ServerName') AS nvarchar(255))) as ServerName,
    x.name as databaseNameM, y.database_name as DatabaseNameB,
    CAST(DatabasePropertyEx(x.name,'Recovery') AS nvarchar(15)) as RecoveryModel ,
    case y.type 
        when 'D' then 'FULL BCK'
        when 'I' then 'DIFF BCK'
        when 'L' then 'TRAN BCK'
        when 'F' then 'FILE BCK' 
        else 'UNKNOWN!' 
    end as BackupType, 
    y.backup_finish_date as LastBackup,
    y.Bck_Location as Location
FROM master.dbo.sysdatabases x
FULL OUTER JOIN
(SELECT max_bck.server_name,max_bck.database_name,max_bck.backup_finish_date,max_bck.type,
    left(fam.physical_device_name,len(fam.physical_device_name)-patindex('%\%',reverse(fam.physical_device_name))+1) AS Bck_Location
FROM (select bak.server_name,bak.database_name,max(bak.backup_finish_date) as backup_finish_date,bak.type 
        from msdb.dbo.backupset bak
        group by bak.server_name,bak.database_name,bak.type) max_bck
INNER JOIN msdb.dbo.backupset bak
ON max_bck.backup_finish_date = bak.backup_finish_date 
    and max_bck.type = bak.type
    and max_bck.database_name = bak.database_name
INNER JOIN msdb.dbo.backupmediafamily fam
ON bak.media_set_id = fam.media_set_id
) y
ON x.name = y.database_name
WHERE isnull(x.name,y.database_name) !='tempdb'
    AND (y.server_name IS NULL OR y.server_name = CAST(SERVERPROPERTY('ServerName') AS nvarchar(255)))
    AND CAST(DatabasePropertyEx(x.name,'Status') AS nvarchar(15)) = 'ONLINE'
ORDER BY ServerName,isnull(x.name,y.database_name),type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM