簡體   English   中英

使用Powershell獲取SQL備份數據

[英]Using Powershell to get SQL Backup Data

我一直在尋找自動獲取有關SQL備份信息的方法,並且Technet這篇文章中的Powershell腳本可以很好地執行,除了返回的數據有問題。

運行時,它將為我知道尚未通過SQL備份的測試數據庫返回一個“最后備份”日期。 似乎正在花費系統備份的時間。 它與OS事件日志中的beVSS開始時間一致(服務器由Backup Exec 2010備份,而不使用SQL代理)。

我希望它收集上次運行SQL備份而不是系統備份的時間。 這有可能以某種方式過濾掉嗎?

DB Server是Windows Server 2008 / SQL Server 2008。

編輯

為了明確起見,我正在尋找PowerShell中的解決方案,而不是SQL,並了解PowerShell為什么返回其作用。

在查找最新備份的時間和文件名時,我經常使用這樣的查詢。 該特定查詢將返回最新的完整備份或差異備份,但是顯然,您可以根據需要進行更改。

SELECT 
    bf.physical_device_name ,
    name ,
    bs.backup_start_date ,
    bs.media_set_id
    FROM sys.databases d
    OUTER APPLY (
        SELECT TOP 1
            backup_start_date ,
            media_set_id
        FROM msdb.dbo.backupset
        WHERE type != 'L'
        AND database_name = d.name
        ORDER BY backup_start_date DESC
    ) bs
INNER JOIN msdb.dbo.backupmediafamily bf ON bf.media_set_id = bs.media_set_id

我傾向於對msdb中的backupset表使用查詢,而不是對您引用的文章中提到的SMO LastBackupDate數據庫屬性進行查詢。

在我的環境中,我們使用CommVault Galaxy進行備份,並且可以通過查看backupset表的user_name列來過濾CommvVault與常規SQL備份的備份。 SQL Agent和CommVault在不同的用戶帳戶下運行。

http://msdn.microsoft.com/en-us/library/ms186299.aspx

暫無
暫無

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

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