(4.3)修改计算机名注意事项
转自:http://blog.51cto.com/jimshu/1588158
关键字:修改计算机名,改实例名,改计算机名
一、查看计算机名
1. 通过函数查看
在安装SQL Server时,安装程序将本地服务器的名称设置为“计算机名”,并保存为一个全局变量@@SERVERNAME。如果在安装完成之后又修改了本地服务器的名称,那么@@SERVERNAME并不会主动修改。
SQL Server还有一个SERVERPROPERTY函数,可以返回当前的本地服务器的网络名称。例如:
SELECT @@SERVERNAME as InstalledName, SERVERPROPERTY('SERVERNAME') as NetworkName
InstalledName NetworkName =============== =========== WIN-IT2CFA8QS58 SQL2012SVR |
在上例中,可以确定这台计算机在安装后修改了计算机名。第一列返回了在安装SQL Server时的计算机名;第二列返回了当前的计算机名。
2. 通过系统存储过程查看
可以使用sp_helpserver查看服务器的信息。http://msdn.microsoft.com/zh-cn/library/ms189804.aspx
EXEC sp_helpserver
name network_name status id collation_name connect_timeout query_timeout ========== ============ ================================ == ============== =============== ============= SQL2012SVR SQL2012SVR rpc,rpc out,use remote collation 0 NULL 0 0
|
二、修改计算机名
当发现两个名称不符时,可以参照官网的示例进行修改。http://msdn.microsoft.com/zh-cn/library/ms174396.aspx
EXEC sp_dropserver 'current_server_name'; GO EXEC sp_addserver 'new_server_name', 'local'; GO |
修改了计算机名之后,重启Windows后生效。
完善后的脚本如下:
IF @@SERVERNAME <> SERVERPROPERTY('SERVERNAME') BEGIN EXEC sp_dropserver @server = @@SERVERNAME DECLARE @new_server_name SYSNAME SELECT @new_server_name = CAST(serverproperty('servername') as SYSNAME) EXEC sp_addserver @server = @new_server_name , @local = 'local' END |
三、计算机名对复制(Replication)的影响
修改计算机名之后,发布和订阅的属性都不可以查看。
由于存在着复制,SQL Server在sp_dropserver时失败:
消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行 仍有对服务器 'WIN-IT2CFA8QS58' 的远程登录或链接登录。 |
而且不可以删除链接服务器。
对策:
1. 在修改计算机名之前,将发布和订阅“生成脚本”。
2. 在右键菜单中选择“禁用发布和分发”,这将删除所有的发布和订阅。
3. 修改脚本,将计算机名改为新的名称。
4. 修改计算机名之后,根据脚本重新生成发布和订阅。
注解:如果在修改了计算机名之后再删除发布和订阅,那么在删除时需要清除“连接到发布服务器,并且在其中删除此订阅的记录”选项(因为无法连接到原来的计算机名)。
四、计算机名对安全性的影响
修改了计算机名,默认的安全帐户也会受影响。
应注意到,默认的本地帐户仍然显示旧的计算机名。而且,在添加新的本地管理员帐户时被拒绝(实际上,Windows SID是相同的)。
需要使用另一个管理员帐户连接到SSMS,删除原有的默认本地帐户,再重新添加新的本地帐户。注意为新的本地帐户配置对应的服务器角色等权限。
五、对其它服务的影响
例如,***S仍然将数据库指向旧的服务器名称。
六、替代方案
可以添加一个“别名”,使客户端工具仍然可以使用原先的计算机名。
在64位的操作系统中,要注意区分客户端工具。例如,SSMS是一个32位的应用程序,因此需要在“SQL Native Client 11.0配置(32位)”中添加别名。