恢复SQL Server系统数据库(模型,主控等)的重要性是什么?

我必须将某些生产数据库还原到同一台Microsoft SQL Server 2005计算机上的不同驱动器。 这工作得很好,使用数据库的应用程序重新上线。

但是,我还没有恢复SQL Server自己创build的系统(或缺省?)数据库(模型,主数据库等)。 我的问题是,这些数据库的作用是什么? 以及我恢复它们有多重要?

master和msdb store包含定义整个系统的过程,函数,表,视图和其他对象。 例如,master包含诸如login信息,数据库文件所在位置,系统存储过程以及许多其他内容等信息。 msdb最初主要是关于工作,警报。 dbmailconfiguration信息和很多其他的东西已经添加了多年。

模型是一种样本数据库,当你创build一个新的数据库时,作为一个起点。 模型中的对象将被复制到新的数据库中。 人们过去经常利用这种行为(比如10年或15年前),所以他们可以在他们创build的每个数据库中包含一个特定的过程或表格,但是这样做有问题,并且已经被废弃了。 但是,有点像附件,模型不是非常糟糕,但你仍然需要它。

tempdb是为临时表(#sometablename和## someothertablename),表variables(如果它们足够大),sorting操作和分组操作(如GROUP BY或DISTINCT)提供临时存储的数据库,可能还有其他更为神秘的东西。 通常情况下,你永远不会恢复一个tempdb。 每次重新启动服务器时都会重新从头开始重build。

最近版本的SQL Server有另外一个叫做“资源数据库”的隐藏系统数据库。 你永远不应该有任何理由去鼓捣那个。

如果您想知道,“pubs”,Adventurworks和AdventureworksDW不是系统数据库,它们只是作为示例运行的常规用户数据库,可能会在不影响服务器行为的情况下将其删除。

系统数据库通常只有在发生某种灾难性故障(如磁盘崩溃或数据中心烧毁)时才能恢复。 如果要从一台服务器迁移到另一台服务器,并且需要保留login名,作业,dbmail和其他configuration(尽pipe还有其他更好的方法可以实现这一点),也可以恢复系统数据库。

你想备份master,model和msdb。 您不需要备份资源数据库或tempdb。 如果你的工作职责之一是“dba”,那么最好回顾一下为了恢复这些数据库(在MSKB文章中有logging)你可能必须做的事情,因为恢复系统数据库比恢复用户数据库更复杂。 实际上处于紧急情况时,您不想第一次阅读这些知识库文章。

还原用户数据库时,不需要还原系统数据库。 恢复用户数据库的方法是,您需要确保数据库中描述的用户与服务器(存储在主数据库中)的login匹配。 这就是sp_change_users_login系统过程的用途。