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

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

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

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

Server=(local)

Server=MSSQLSERVER\instance_name

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

最佳答案

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

顺便说一句,您不应该为此高峰注册表。首先,它是无证的,并且可能会发生任意和未经通知的更改。其次,这是不正确的,因为注册表中存在的实例可能没有运行。第三个也是不正确的,因为如果 SQL Browser 服务不通告它们,即使正在运行的实例也可能无法连接。

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

关于.net - 默认实例的连接字符串,例如命名实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3449397/

相关文章:

jquery - ko.applyBinding 使用 Knockout 刷新搜索结果?

c# - WebApi XML 反序列化 - 具有多个子节点的节点未正确反序列化为子节点对象数组

asp.net - 在 Visual Studio 2012 中创建 Controller 时出错

c# - 从文本文件导入 SQL Server 数据库,ADO.NET 是否太慢?

asp.net - 数据库连接 ASP.NET - PostgreSQL

c# - 读取 C# 中的 JS 变量/将 JS 变量转发到 visual studio 性能测试?

c# - 解决方案中的项目

c# - Odbc 连接字符串导致登录失败

mysql - 从特定日期选择唯一记录,不包括以前日期的重复记录

sql - 如何在sql server management studio中查找linked_server名称?