我们在客户服务器上安装了一个 SQL Server 2008 实例。客户的 IT 部门负责机器的各种备份。
SQL Server 日志显示每天晚上 7 点都有完整备份,但我们找不到 SQL Server 中安排的任何计划的证据。
我们联系的技术人员无法告诉我们是否有某种自动备份,他们只告诉我们整台机器正在备份。
使用我在这个论坛线程中找到的脚本,我发现物理设备名称是 GUID,这意味着这是一个外部备份过程:
USE [msdb]
GO
SELECT
[bs].[database_name],
[bs].[backup_start_date],
[bs].[backup_finish_date],
[bs].Server_name,
[bs].user_name AS [BackupCreator] ,
[bmf].physical_device_name
FROM msdb..backupset bs
INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id]
ORDER BY [bs].[backup_start_date] DESC
这是来自上述查询的一行:
db_name 2015-09-16 19:01:23.000 2015-09-16 19:01:28.000
SERVER_NAME NT AUTHORITY\SYSTEM
{424F084A-F35D-4A66-8FC7-072268A89A77} 5
此外,备份开始和完成日期仅跨越 5 秒,所以我想很明显这不是 sql server 的工作。
这是日志中的一行:
2015-09-03 19:02:30.71 备份
数据库已备份。
数据库:db_name,创建日期(时间):2012/10/12(20:52:11),转储页面:3290021,
第一个 LSN:276028:152755:172,最后一个 LSN:276028:152827:1,转储设备数:1、
设备信息:
(FILE=1,TYPE=VIRTUAL_DEVICE:{'{95380B0A-D50B-408F-B95F-1AB8975BA7F8}5'})。
这只是一条信息性消息。无需用户操作。
那么,既然他们无法帮助我们,我能做些什么来追踪负责备份的过程呢?我们需要这个,因为我们想以有序的方式协调备份,并且为了使日志保持在一个合理的大小也做事务日志备份(现在我们每周都会收缩日志,这不是一个好方法去)。
备份消息中的事实
VIRTUAL_DEVICE
清楚地表明这不是 T-SQL 作业或 SQL Server 计划的备份,因此您不会在 SQL Server 的任何地方找到它。您要么有一些third party
工具或windows inbuilt backup mechanism
正在运行正在执行此备份的工具。现在,如果您真的想找出备份的来源,请咨询 windows 团队或存储团队,您会得到一个不错的主意。如果所有利益相关者都说他们不知道备份的来源(这极不可能),您可以通过禁用
SQL Server VSS writer
from来阻止此类备份的发生Services.msc
。此类第三方备份依赖 SQL Server VSS 编写器服务来连接到数据库并进行备份。
在继续上述操作之前,我建议您与备份/Windows 管理员交谈,如果他们不知道任何此类备份,您可以继续禁用此服务。否则你不能,你应该与他们协商更多关于这方面的信息。
请阅读有关 VSS 备份的信息
我想我找到了负责备份的进程。
我在 Windows 系统事件日志中搜索了信息,并在备份感兴趣的时间段中找到了以下行:
您可以清楚地看到 MSSQLSERVER 上的备份活动在 BeVssProvider 启动的其他活动之前和之前很短,继续使用 ESENT 的 ShadowCopy。
我搜索了这些名称,BeVssProvider 链接到Symantec Backup Exec™ for Windows Servers ( http://systemexplorer.net/it/file-database/file/bevssprovider-exe )。
所以我猜这个软件每天都在为机器拍摄快照(我不是这个领域的专家)。