当部署好SQLServer数据库之后,突然发现数据库服务器的主机名字取得不符合企业的命名规范。此时若更改了计算机的名字后,原来的数据库实例就可能发生访问故障。客户端可能无法连接到这个数据库实例。此时该如何处理呢?难道只有重新安装数据库一个办法了吗?在SQLServer2008中已经可以在不重新安装数据库的情况下让数据库在启动期间自动识别新修改后的数据库名称。笔者在这篇文章中就这个话题跟大家探讨一下。
一、重命名计算机可能会带来的麻烦。
虽然在SQLServer2008中已近可以在不重新安装数据库系统的情况下来重命名数据库服务器主机的名字。但是在使用这种方法的时候,仍然有很多的限制。为此在动手对主机名字进行修改之前,数据库管理员必须先对这些限制有所了解。这有助于主机名字修改之后相关服务的正常使用。
如果数据库中同时部署有报表服务器,无论他们是部署在同一台主机上还是部署在不同的主机中,只要更改了数据库服务器主机的名字,那么很这报表服务器就将无法访问。也就是说,报表服务其是无法主动识别修改后的计算机名字的。为此在更改主机名字之后,还需要手工调整数据库引擎,让报表服务器能够识别修改后的主机名字。如果要调整数据库服务器的引擎的话,需要按如下的方法来做。如果数据库服务器与报表服务器是部署在同一台主机上的,即报表服务器使用的是本地数据库引起,则可以使用local命令来指定新的服务器(换了主机名字之后,报表服务器就会认为采用了一台新的服务器)。如果数据库服务器与报表服务器不是在同一台主机上的话,那么调整的过程就比较复杂了。此时数据库管理员需要启动报表服务器配置工具,连接到使用重命名的服务器中的报表服务器数据库的报表服务器。这是官方资料上的说话,听起来比较拗口。其实数据库管理员只要知道,对于重命名后的数据库服务器,报表服务器都把它当作新的服务器来对待。为此这里就是使用新命名的计算机名字来进行连接。连接上之后,打开数据库安装页,在服务器名称处找到数据库名称,然后单击连接。连接上之后,按应用即可。以后报表服务器启动的时候,就会利用最新的主机名字来进行连接。可见虽然重新命名后,不用重新安装SQLServer数据库。但是数据库与其他服务之间的连接,如与报表服务器之间的连接就需要重新设置过。
如需要更新全部客户端的连接。在客户端连接上,可以通过IP地址来进行连接,也可以通过主机名来进行连接。如果在客户端的连接设置上恰巧采用了主机名字连接的话,那么更换主机名字之后就需要逐一的去更改客户端的连接设置。要把客户端的连接名字改为最新的计算机名字。显然当数据库客户端的数量比较多的时候,这会增加很多的工作量。所以,有时候如果把客户端的连接设置为通过IP地址来连接,可能会更加的方便。因为通过这种方式连接后,数据库更改服务器后就对各个客户端就不需要进行调整。另外如果企业还配置了数据库镜像,则在给部属有数据库镜像的计算机重命名时,需要注意必须先关闭数据库镜像,然后才能够更改镜像主机的名字。而且跟报表服务器一样,要利用新的名字来建立数据库镜像。因为数据库镜像中的元数数据不会自动更新来反映新计算机的名称。
可见即使在不用重新安装数据库服务器的情况下,如果贸然更改数据库主机的名字,仍然会凭空的增加不少的工作量。因为跟数据库服务器相关的其它应用服务器,如报表服务器、镜像主机等等,可能都需要重新设置,才能够建立起跟数据库服务器之间的连接。为此SQLServer2008只所以提供这项功能并不是说他就赞同大家去更改数据库服务器的名字。相反,在平时的工作中各位数据库管理员还是需要尽量去避免这么做。在数据库服务器部属之前,需要先确认一下数据库服务器的主机名字是否符合相关的命名规范。如果数据库管理员不能够确定的话,那么就让企业的网络管理员确认一下。总之,数据库服务器部署完成之后,不到万不得已的情况下,不要重命名数据库服务器的主机名字。
二、更改计算机名字。
1、 重命名数据库服务器的名字。
要更改数据库服务器的名字还是比较简单的,只需要执行几个系统存储过程既可。为了方便数据库管理员更改数据库主机的名字,数据库中提供了几个存储过程。如sp_dropserver与sp_addserver存储过程。这两个存储过程的作用就是先把旧的服务器注销掉,然后把新的服务器加进去。虽然更改了名字后仍然是同一个数据库服务器,但是系统是把他们当作两个不同的服务器来管理。以上这个两个存储过程,会把存储在sys.servers 中并由系统函数@@SERVERNAME报告的系统元数据进行更新。这可以让相关的作业得知计算机名称的变化。如可以让一些远程连接得知其名称发生变化的事实。另外需要注意的是,如果当前数据库有远程登录的话,则执行第一个存储过程时可能会出现错误。此时数据库管理员必须要远程登录等删除掉,然后才能够执行这个存储过程。为此对数据库重命名的动作最好能够在夜深人静没有人使用数据库的情况下进行设置。免得因为重命名数据库服务器的作业影响员工正常使用数据库服务器。如果用户24小时全天候都需要使用数据库,那么也需要提前告知用户,让他们事先做好准备。如可以规定一天中访问数据库用户比较少的时刻,在断开数据库服务器网络连接的情况下来进行这个作业。防止因为其他用户的登录请求而导致这个重命名作业无法顺利进行。
不过仍然有不少的应用服务不能够自动更新其自身的连接配置。如上面谈到的报表服务器与镜像主机,仍然需要手工来重新建立这些应用服务器与数据库服务器之间的连接。为此数据库管理员必须耐心的更新这些连接信息,以免给用户的正常访问带来负面的影响。
2、 更改报表服务器的名字。
更改报表服务器主机的名字与更改数据库服务器的名字方法有所不同。如果数据库管理员下定决心需要修改报表服务器的名字,则需要按照以下的步骤来操作。
第一步:修改配置文件。在报表服务器中,采用的配置文件是rsreportserver.config。报表服务器与数据库服务器之间的连接都是通过这个配置文件来控制的。为此如果报表服务器的名字修改了,则需要相应的修改这个配置文件。如数据库管理员需要找到URLROOT这一项内容。传递扩展插件模块是使用这个参数设置的值来编写在访问存储于报表服务器中的项是所使用的。所以更改报表服务器的名字时需要更改这个参数,以便数据库的订阅服务能够按照预期的方式继续传递。为此习惯管理员需要把这个参数找到然后把主机名字修改为新的主机名字。
第二步:查看ReportServerUrl参数。在有些报表服务器的配置文件中,会存在这个选项。如果有这个选项的话,则必须同时更改这个选项的值,把服务器主机的名字更改为新的服务器主机名。如果这个参数没有值的话,那么就不需要管他。注意千万不要多次一举,把空值更新为最新的计算机名字。虽然这可能不会影响到报表服务器的正常使用,但是这么做是画蛇添足。只会增加后续的维护工作量,而没有其他的价值。
另外需要注意的是,修改报表服务器的名字后可能在一段时间内还是可以通过原先的名字来访问报表服务其。此时数据库管理员不要高兴的太早,以为更改数据库报表服务器的名字没有关系。其实不用几分钟用户就会向你反映报表服务器访问不了了。原来这是因为企业网络中可能存在一些域名解析的服务器。在这些服务器中存在着主机名与IP地址的一一对应关系。可能报表服务器的名字更改后,在域名服务器中还没有及时更新过来。为此更改了报表服务器的名字之后,有些用户在短时间内还是可以通过原先的名字登陆到报表服务器上的。但是这只会存在一段比较短的时间之内。所以数据库管理员还是老老实实的按照上面的方法调整配置文件为好.
应该很详细了吧
改了计算机名后,最好重新设置一个sql的实例
或者删掉sql重新装一次,就可以了