编辑:我让它恢复了我需要的信息,但是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()))
答案 0 :(得分: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
同样,如果您未传递数据库名称,则会列出所有数据库。
你还想要什么?