在我的.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实例,但连接失败。
答案 0 :(得分:11)
如果实例名称是MSSQLSERVER,则必须使用Server=servername
之类的模板。对于所有其他实例名称,请使用Server=servername\instancename
之类的模板。您无法明确指定默认实例名称。
作为旁注,你不应该为此注册。首先,没有记录,并受到任意和未宣布的变更。其次,是不正确的,因为注册表中存在的实例可能没有运行。第三个也是不正确的,因为即使正在运行的实例也可能无法连接到SQL Browser服务不宣传它们。
检测现有实例的推荐和支持方法是使用SQL浏览器广播功能,可以使用SmoApplication.EnumAvailableSqlServers
从客户端代码中利用它们。
答案 1 :(得分:0)
您应该使用Server=servername\instance_name
或Server=address\instance_name