【问题标题】:Listing available SQL Servers with instances does not include SQL Server Express列出具有实例的可用 SQL Server 不包括 SQL Server Express
【发布时间】:2013-11-01 01:22:54
【问题描述】:

我正在使用以下代码列出所有可用的 SQL Server(它是 taken from here):

DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();
for (int i = 0; i < servers.Rows.Count; i++)
{
     {
         if ((servers.Rows["InstanceName"] as string) != null)
            CmbServerName.Items.Add(servers.Rows["ServerName"] + "\\" + servers.Rows["InstanceName"]);
         else
            CmbServerName.Items.Add(servers.Rows["ServerName"]);
      }
  }
}

在我的本地系统(计算机名称 SERVER-1)上我有 SQL Server 2012 Express,在远程 SERVER-2 上我有 SQL Server 2008。所以当我运行此代码时,它会返回:

SERVER-1
SERVER-2\SQLSRVR2008INSTANCENAME

当它应该是:

SERVER-1\SQLEXPRESS
SERVER-2\SQLSRVR2008INSTANCENAME

我在这里做错了什么?

【问题讨论】:

  • SQL Browser 服务是否在 SERVER-1 上运行?您是否在防火墙中创建了例外以允许 UDP 端口 1434 的传入连接?
  • 我可以连接和使用任何一个 SQL 服务器,所以是的,所有端口都配置正确。现在在这种情况下我需要 SQL Browser 做什么?
  • SQL Browser 允许您查看服务器上的实例。
  • 有关 SQL 浏览器服务的详细信息,请参见此处。 bobpusateri.com/archive/2010/09/…
  • 您是否 100% 确定 SERVER-1 上的本地 Express 实例真正命名为 SQLEXPRESS?在该机器上,如果您转到 SQL Server 配置管理器,您会在 SQL Server 服务下看到什么?您可能会看到SQL Server (MSSQL)(默认实例)而不是SQL Server (SQLEXPRESS)(命名实例)。您可以安装多个 SQL Express 实例,0 或 1 实际上可以是名为 SQLEXPRESS 的命名实例。所以仅仅因为它是 SQL Express 并不意味着实例名称自动为SQLEXPRESS

标签: c# asp.net .net sql-server sql-server-2008


【解决方案1】:

我想你可以在注册表中找到本地实例。我很久以前遇到过同样的问题。以下链接帮助了我 SqlDataSourceEnumerator.Instance.GetDataSources() does not locate local SQL server 2008 instance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多