2011年6月23日星期四

  SQL Server 2005 只能看到命名实例 无法看到默认实例

问题描述

==========

Enumerating sql server using SMO doesnot list default instance if it is installed after named instance:
SQL Server 2005服务器有两个实例,一个是默认实例ABC,一个是命名实例ABC\KDHR,在management studio的bowser more中,在local services中可以看到这两个实例,在network services中只能看到命名实例ABC\KDHR,无法看到默认实例ABC,但是通过实例名称可以成功连接SQL Server。

故障排查

==========

通过查看Management Studio的dump文件,发现问题出现在以下函数:

Enumerating with either SmoApplication.EnumAvailableSqlServers() or
SqlDataSourceEnumerator.Instance.GetDataSources() doesn't list the default
instance, if default instance is installed after the named instance.
(SmoApplication.EnumAvailableSqlServers() actully called
SqlDataSourceEnumerator.Instance.GetDataSources() )

经确认,这是SQL Server 2005的一个已知问题:SQL BU Defect Tracking 408441, SOX070206700032

出现这个问题的原因,是由于在安装SQL Server 2005时,先安装了命名实例ABC\KDHR,后安装了默认实例,这使得默认实例在注册表的信息排在了命名实例的后面,由于SQL Server 2005不能很好的识别这些注册表信息,以至于不能显示出默认实例。

解决办法

==========

1.打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server下面的InstalledInstances

2.发现InstalledInstances的值为KDHR MSSQLSERVER,改成MSSQLSERVER KDHR

3.重新使用SQL Server 2005 Management Sudio的“Network Services”查看是否能够看到默认实例

没有评论:

发表评论