默认实例的连接字符串,例如命名实例

时间:2010-08-10 13:24:22

标签: .net sql-server ado.net database-connection connection-string

在我的.NET应用程序中,我正在连接到Microsoft SQL Server 2005或2008数据库。用户选择应用程序显示它的实例,然后应用程序应该对此实例执行某些操作。我从注册表中获取实例名称,HKLM \ Software \ Microsoft \ Microsoft SQL Server \ Instance Names \ SQL。

我不知道用户是否选择了默认实例或命名实例(并且Instance Names注册表值中没有此类信息)。但是,为了连接到任意实例,我应该使用

Server=(local)

Server=MSSQLSERVER\instance_name

在我的ADO.NET连接字符串中。我只能使用一个连接字符串模板吗?我尝试将Server = MSSQLSERVER \ MSSQL10.MSSQLSERVER用于我的默认SQL Server 2008实例,但连接失败。

2 个答案:

答案 0 :(得分:11)

如果实例名称是MSSQLSERVER,则必须使用Server=servername之类的模板。对于所有其他实例名称,请使用Server=servername\instancename之类的模板。您无法明确指定默认实例名称。

作为旁注,你不应该为此注册。首先,没有记录,并受到任意和未宣布的变更。其次,是不正确的,因为注册表中存在的实例可能没有运行。第三个也是不正确的,因为即使正在运行的实例也可能无法连接到SQL Browser服务不宣传它们。

检测现有实例的推荐和支持方法是使用SQL浏览器广播功能,可以使用SmoApplication.EnumAvailableSqlServers从客户端代码中利用它们。

答案 1 :(得分:0)

您应该使用Server=servername\instance_nameServer=address\instance_name