leeg4625 Asked: 2016-02-19 03:25:22 +0800 CST2016-02-19 03:25:22 +0800 CST 2016-02-19 03:25:22 +0800 CST 了解备份历史的数据库电子邮件 772 我需要借助数据库电子邮件发送一封电子邮件,列出不同类型的备份、备份时间、这些备份的摘要、备份文件路径和备份名称。谁能帮我写一个脚本。 提前致谢。 sql-server database-mail 2 个回答 Voted KASQLDBA 2016-02-19T03:47:47+08:002016-02-19T03:47:47+08:00 网上有各种可用的 SQL 脚本,例如:可以在此处找到一个脚本来检索备份历史记录,然后使用sp_send_dbmail通过 SQL 代理作业调度它来根据需要发送检索到的备份历史记录的电子邮件。 但是,我一直使用的方法是利用 Powershell 发送此处描述的此类报告Use PowerShell to Report SQL Server Backup Status 您可以保存上述脚本并在需要时手动执行它。但是,为了充分利用它,建议使用 SQL Server 代理每天安排它。这样做将使您及早收到问题通知,并允许您迅速采取行动以备份这些数据库。 Best Answer Krismorte 2016-02-19T04:07:10+08:002016-02-19T04:07:10+08:00 在我的工作中,我发送带有 HTML 的电子邮件报告。 我得到了 @leeg4625 指向的脚本 我希望这对你有用 declare @html varchar(max) set @html='<h1>My Backup Report</h1> <table border="1";><tr><td><b>Server</b></td><td><b>database_name</b></td><td><b>backup_start_date</b></td><td><b>backup_finish_date</b></td><td><b>expiration_date</b></td> <td><b>backup_type</b></td><td><b>backup_size</b></td><td><b>logical_device_name</b></td><td><b>physical_device_name</b></td><td><b>backupset_name</b></td><td><b>description</b></td></tr>' SELECT @html=@html+'<tr><td>'+CONVERT(CHAR(100), SERVERPROPERTY('Servername'))+'</td><td>' +isnull(msdb.dbo.backupset.database_name,'')+'</td><td>' +isnull(convert(varchar,msdb.dbo.backupset.backup_start_date,103),'')+'</td><td>' +isnull(convert(varchar,msdb.dbo.backupset.backup_finish_date,103),'')+'</td><td>' +isnull(convert(varchar,msdb.dbo.backupset.expiration_date,103),'')+'</td><td>' +isnull(CASE msdb..backupset.type WHEN 'D' THEN 'Database' WHEN 'L' THEN 'Log' END,'')+'</td><td>' +isnull(convert(varchar,msdb.dbo.backupset.backup_size),'')+'</td><td>' +isnull(msdb.dbo.backupmediafamily.logical_device_name,'')+'</td><td>' +isnull(msdb.dbo.backupmediafamily.physical_device_name,'')+'</td><td>' +isnull(msdb.dbo.backupset.name,'')+'</td><td>' +isnull(msdb.dbo.backupset.description,'')+'</td><td></tr>' FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) ORDER BY msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_finish_date EXEC msdb.dbo.sp_send_dbmail @recipients = '[email protected];[email protected]', @body = @htm, @body_format='HTML', @subject = 'Backup Report' end
网上有各种可用的 SQL 脚本,例如:可以在此处找到一个脚本来检索备份历史记录,然后使用sp_send_dbmail通过 SQL 代理作业调度它来根据需要发送检索到的备份历史记录的电子邮件。
但是,我一直使用的方法是利用 Powershell 发送此处描述的此类报告Use PowerShell to Report SQL Server Backup Status
您可以保存上述脚本并在需要时手动执行它。但是,为了充分利用它,建议使用 SQL Server 代理每天安排它。这样做将使您及早收到问题通知,并允许您迅速采取行动以备份这些数据库。
在我的工作中,我发送带有 HTML 的电子邮件报告。
我得到了 @leeg4625 指向的脚本
我希望这对你有用