首先了解主要的系统数据库:
master | 包含登录信息和其他数据库的核心信息 |
msdb | 存储作业、操作员、警报、备份还原历史。数据库邮件信息等等。 |
model | 所有新数据库的模型,如果希望新数据库都有某些对象,可以在这里创建。 |
tempdb | sql server重启时重建,所以不需要备份 |
除了以上四种,其实还有一个数据库: Resource
从2005就引入的,一个只读、隐藏的数据库,包含所有在sql server中的系统对象。由于SQL SERVER不支持备份还原Resource数据库。所以DBA需要复制Resource的mssqlsystemresource.mdf和mssqlsystemresource.ldf文件。
SQL Server 2005 中的Resource数据库在路径: “<drive>:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\” location
SQL Server 2008 中的Resource数据库在路径: “<drive>:\Program Files\Microsoft SQL Server\MSSQL10.<instance_name>\MSSQL\Binn\” location.
报表服务数据库: 如果装了报表服务,将会看到这两个服务数据库
ReportServer
ReportServerTempDB
Replication System Database(复制服务系统数据库)
distribution - 当配置了复制服务时,将会看到这个数据库。
如果需要执行基于文件的备份功能来备份Resource数据库,则需要开启XP_CmdShell
USE master GO sp_configure 'show advanced options' GO /* 0 = Disabled , 1 = Enabled */ sp_configure 'xp_cmdshell', 1 GO RECONFIGURE WITH OVERRIDE GO
使用下面语句可以把系统数据库备份到E盘的 SystemDatabaseBackups 文件夹中:
USE master GO SELECT GETDATE() AS 'System Database Backup Start Time' GO /* Backup Distribution Database */ BACKUP DATABASE Distribution TO DISK = 'E:\SystemDatabaseBackups\Distribution.BAK' WITH INIT GO /* Backup ReportServer Database */ BACKUP DATABASE ReportServer TO DISK = 'E:\SystemDatabaseBackups\ReportServer.BAK' WITH INIT GO /* Backup ReportServerTempDB Database */ BACKUP DATABASE ReportServerTempDB TO DISK = 'E:\SystemDatabaseBackups\ReportServerTempDB.BAK' WITH INIT GO /* Backup Master Model */ BACKUP DATABASE Model TO DISK = 'E:\SystemDatabaseBackups\Model.BAK' WITH INIT GO /* Backup Master Database */ BACKUP DATABASE Master TO DISK = 'E:\SystemDatabaseBackups\Master.BAK' WITH INIT GO /* Backup Master MSDB */ BACKUP DATABASE MSDB TO DISK = 'E:\SystemDatabaseBackups\MSDB.BAK' WITH INIT GO /* Copy Resource Database Files Using XP_CMDSHELL */ EXEC xp_cmdshell 'COPY /Y "D:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\Binn\mssqlsystemresource.mdf" "E:\SystemDatabaseBackups"' GO EXEC xp_cmdshell 'COPY /Y "D:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\Binn\mssqlsystemresource.ldf" "E:\SystemDatabaseBackups"' GO SELECT GETDATE() AS 'System Database Backup End Time' GO