重建SQL Server的master数据库(二)
2008-11-08 10:08:48 来源:WEB开发网问题
在此系列之前的文章里,我们已经讲了如何去重建master数据库,我们采取了逐项列出重建master数据库的步骤,在这系列的第三篇文章里将会向你介绍怎样在返回状态前重建恢复SQL实例的过程。在这一篇幅中将向你介绍什么是参与销毁你的实例,不管你是否相信,这也就是重建真正所做的。我知道你在即将做这些时可能会觉得很难,但是当你在按快捷键F5的时候,你就会知道所执行的结果是什么了。在第一次执行查询之前,首先需要分离出你所有的用户数据库:“我们将怎么做!?”
希望本篇的内容能解决你的疑惑。
解决方案
在开始之前,你将遵循以下几个先决条件:
1、 脚本已经在此系列文章的第一篇中已经创建好;
2、 在初次使用时,需要安装SQL Server。
任务 | Steps 步骤 |
分离所有用户数据库 | 使用这一系列文章中第一篇的脚本文件0.sql文件,您首先需要分离所有的用户数据库。 当master数据库重建的时候,它没有任何用户数据库或对象的实例所对应的数据。在重建之前通过分离用户数据库,可以保证在任何因为在重建过程中文件发生了错误,都可以彻底的清楚重建的操作。执行0.sql 。 |
载入Media | 在你准备重建时,在对应的版本和平台中载入Media就很有必要,这可以直接加载到DVD驱动器的工作站/服务器中,或者直接从本地的共享文件中进行复制。 |
打开命令提示符,并开始重建进程 | 打开命令提示符然后运行以下命令,而不需要通过你的实例来获取对应的值: start /wait <path>setup.exe [/qb | /qn] {VS=<VSName>} INSTANCENAME=<InstanceName> REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=<Current_Domain_User_Password> SAPWD=<New_Password> SQLCOLLATION=<NewSystemCollation> <path>=path就是SQL Server 2005中setup.exe文件中的物理路径 [ / qb或/ qn ]开关= / qb在重建的过程中不能阻止错误并且在工作站中进行提醒。 /qn将阻止这些信息。我喜欢正在执行过程的时候,发生的这些事件,我建议这个世界上所有的其他数据库管理员,无论是多么了解或者精通它们,都应该这样做,所以你可以看到在我的例子当中,在脚本的下面就选择了/gb开关。 VS=如果这是一个群集实例,你就需要包括VS(虚拟服务器)参数,它是实例在被重建的时候所用到的,在非群集SQL Server的实例中,此参数可以省略。 INSTANCENAME =如果SQL Server的目标实例是已经命名过了,就可以省略,例如,如果正在重建的是一个默认的SQL Server实例。 REINSTALL=此参数控制的具体过程是通过setup.exe来安装。由于这一系列的重建与改变SQL实例排序的规则有关系,我们指定的参数值SQL_Engine REBUILDDATABASE = 1。 ADMINPASSWORD =参数对应于当前登录运行重建进程的用户。使用者必须有一个成员的SQL实例的系统管理员服务器角色。 SAPWD =一旦master数据库被重建,在SQ登录中sa对应的密码。就像以前一样,需要设置一个安全性的密码。 SQLCOLLATION =由于这一系列的重建与改变SQL实例排序的规则有关系,我们特别感兴趣,此参数为你所定义的排序规则。 例如示例的总体说明: 当前登录域 DBA1是sysadmin角色的成员,密码为' DBA1pwd ' Setup.exe的路径= C:TempMSSQL.1 新的sa密码是'!grac3undrpre$$ure!' 新的SQL排序规则是' SQL_LATIN1_GENERAL_CP1_CI_AS ' 示例1 : 在SQL Server 2005中重建群集的实例,如下:虚拟服务器名称= CLUST1 实例名称= NODE1 c:>start /wait C:tempMSSQL.1setup.exe /qb VS=CLUST1 INSTANCENAME=NODE1 REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=DBA1pwd SAPWD=!grac3undrpre$$ure! c:>start /wait C:tempMSSQL.1setup.exe /qb VS=CLUST1 INSTANCENAME=NODE1 REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=DBA1pwd SAPWD=!grac3undrpre$$ure! SQLCOLLATION=SQL_LATIN1_GENERAL_CP1_CI_AS示例2 :在SQL Server 2005中重建非群集的实例,如下:实例名称= NODE1 c:>start /wait C:tempMSSQL.1setup.exe /qb INSTANCENAME=NODE1 REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=DBA1pwd SAPWD=!grac3undrpre$$ure! c:>start /wait C:tempMSSQL.1setup.exe /qb INSTANCENAME=NODE1 REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=DBA1pwd SAPWD=!grac3undrpre$$ure! SQLCOLLATION=SQL_LATIN1_GENERAL_CP1_CI_AS示例3 :重建非群集的默认SQL Server 2005实例: c:>start /wait C:tempMSSQL.1setup.exe /qb REINSTALL=SQL_Engine REBUILDDATABASE=1 ADMINPASSWORD=DBA1pwd SAPWD=!grac3undrpre$$ure! SQLCOLLATION=SQL_LATIN1_GENERAL_CP1_CI_AS |
备份系统数据库 | 一旦重建完成后,就需要花时间来备份master,model和msdb数据库。我强烈建议从重建开始,就不要覆盖之前已经备份好的这些数据库,直到你确信重建是成功的。 |
对所有的补丁和安全进行更新 | 在重建过程中,您的系统数据库会返回到RTM版还尚未打补丁的层次。紧接着,把之前重建过程之前的服务包和安全补丁全更新上。 |
备份系统数据库 | 有些人称之为OverKill,我则称它为一个DBA:再次备份这些系统的数据库,因为在重建前还有一个打补丁的操作。 |
在这一系列篇幅的后续过程中重新建立所有实例的具体内容 | 在这一系列篇幅的后续,你将通过执行在第1部分内容里所有的脚本创建的步骤中重建实例。最终的结果是你的实例会返回到在重建前的状态,就是你原来所需要的服务器的排序规则。 |
总结
在这一系列的最后一篇文章中,将引导您重新附加您的用户数据库并重新创建在重建前就存在的基于用户为基础的内容,这就是对重建的过程进行概括。
更多精彩
赞助商链接