分析和修改过大的SQL Server MSDB数据库
【IT专家网独家】
问题:
我注意到我们一部份MSDB数据库作为系统数据库来说有点太大,有的MSDB数据库甚至超过2GB,这让我们很困惑,因为我们并没有在这些数据库里面创建任何用户定义对象。你能告诉我这可能是什么原因造成的吗?我知道我们以前用SQL Server 2000和2005的时候都有这种情况发生。
专家解答:
我们在一些不同的SQL Server实例里看到过大小超过1GB的MSDB数据库。每种情况下,造成MSDB数据库过大的原因都不一样,所以不同的情况可以让我们对于MSDB数据库的使用都有新的发现和了解。我们现在可以先来看看如何诊断出“病因”,然后再“对症下药”:
在每个SQL Server实例里对MSDB数据库进行备份
尽管MSDB数据库可能已经很大了,但是出于合理的技术或商业原因,可能会在每个SQL Server实例里都对MSDB数据库进行备份。因为,在对数据库做任何改动之前(比如,移动对象、删除对象、重命名对象等等),明智的做法是先对MSDB数据库进行备份,以便以后需要恢复。
备份脚本
BACKUP DATABASE MSDB TO DISK = 'C:\MSDBPreliminaryBackup.bak' WITH INIT
GO
用户定义对象
如果MSDB数据库里有用户定义对象(MSDB里的表、存储过程、视图等等这些不是作为安装或者服务包的一部份创建的对象),你可以考虑找出它们为什么存在,看看这些对象是否可以移动到现有的或新的数据库里。如果你的数据库管理对象在MSDB数据库里,可以考虑把它们移动到一个DBA数据库里,只供SQL Server管理使用。
由于MSDB数据库里存在大量的SQL Server系统表(整合服务、备份和恢复、监控从表等等),最好查看这些表是否MSDB系统表。
从解决问题的方向考虑的话,可以参考以下建议:

- 本文关键词:

