首先了解主要的系统数据库:
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