1

編集:必要な情報を取り戻すことができますが、where句はタイプ「L」のすべてのバックアップを除外していません.(bak.type = 'D' ...)の周りから括弧を取った場合次に、すべての sysdatabases を除外しません。何か案が?

これが私が持っているものです。msdb..backupset と msdb.dbo.backupmediafamily に参加して、タイプを D、device_type を 2 にしようとしていました。ありがとう!

SELECT DISTINCT
    CONVERT(varchar,GETDATE()-1,111) AS Missing_Backup_Date,
    @@servername AS Instance_Name,
    bak.database_name AS Database_Name,
    DATENAME(weekday, getdate()-1) AS Backup_Day_of_Week,
    bak.type AS Failure_Count,
    fam.device_type,
        CASE fam.device_type
            when 2 then 'SQL'
            when 7 then 'Avamar'
        END AS Backup_Type
FROM msdb..backupset bak 
    JOIN msdb.dbo.backupmediafamily fam 
        ON bak.media_set_id = fam.media_set_id
WHERE bak.database_name NOT IN ('tempdb','msdb','master','model')
    AND (bak.type = 'D'
    AND bak.backup_finish_date IS NULL OR bak.backup_finish_date < DATEADD(hour, -24, GETDATE()))
4

1 に答える 1

1

これは、バックアップ チェーンが何であるかを調べるために使用するスクリプトです。これは管理スクリプトであるため、SQL インジェクションに対する保護はありません。IE - アクセスを制限します。

追加のフィールドとフィルターを追加するだけです。

/******************************************************
 *
 * Name:         usp_get_backup_chain.sql
 *     
 * Design Phase:
 *     Author:   John Miner
 *     Date:     01-21-2014
 *     Blog:     www.craftydba.com
 *
 *     Purpose:  What is the backup chain for a database?
 *
 ******************************************************/

/* 
    Choose the database.
*/

USE [msdb]
GO


/*  
    Drop the old stored procedure.
*/

IF OBJECT_ID('[dbo].[usp_get_backup_chain]') > 0
DROP PROCEDURE [dbo].[usp_get_backup_chain]
GO


/*  
    Create the new stored procedure.
*/

CREATE PROCEDURE [dbo].[usp_get_backup_chain]
    @NAME SYSNAME = '*'
AS
BEGIN

    -- Declare variables
    DECLARE @VAR_TSQL VARCHAR(2048);

    -- Dynamic T-SQL
    SET @VAR_TSQL =
     'SELECT
          s.server_name,
          s.database_name,
          s.name as software_name,
          CASE s.[type]
              WHEN ''D'' THEN ''Database''
              WHEN ''I'' THEN ''Differential database''
              WHEN ''L'' THEN ''Log''
              WHEN ''F'' THEN ''File or filegroup''
              WHEN ''G'' THEN ''Differential file''
              WHEN ''P'' THEN ''Partial''
              WHEN ''Q'' THEN ''Differential partial''
              ELSE ''none''
          END AS backup_type,
          s.backup_start_date,
          s.backup_finish_date,
          f.physical_device_name
      FROM 
          msdb.dbo.backupset AS s 
      JOIN
          msdb.dbo.backupmediafamily as f 
      ON  
          s.media_set_id = f.media_set_id
          ';

    -- All databases?
    IF @NAME <> '*'
        SET @VAR_TSQL = @VAR_TSQL + ' WHERE s.database_name = ' + CHAR(39) + @NAME + CHAR(39);

    -- Show in desc order
    SET @VAR_TSQL = @VAR_TSQL + 'ORDER BY s.backup_start_date DESC ';

    -- Run the command
    EXECUTE(@VAR_TSQL);
END;

GO

デバイス タイプに本当に関心がある場合は、動的 SQL の最後に情報を追加してください。

これは BOl ごとのデコードです - http://technet.microsoft.com/en-us/library/ms190284.aspx

      CASE f.device_type
          WHEN 2 THEN 'Disk'
          WHEN 5 THEN 'Tape'
          WHEN 7 THEN 'Virtual device'
          WHEN 105 THEN 'Permanent device'
          ELSE ''
      END AS device_types

ここでも、データベース名を渡さない場合、すべてのデータベースがリストされます。

これ以上何が欲しいですか??

于 2014-03-12T17:58:12.327 に答える