【问题标题】:Cannot connect to database using localhost\sqlserver无法使用 localhost\sqlserver 连接到数据库
【发布时间】:2011-07-03 21:18:58
【问题描述】:

我知道我们应该注意这些短语,但突然间我与localhost\sqlexpress 的所有联系都停止了工作。当.\sqlexpress(local)\sqlexpress 工作时,如果不是因为我正在处理一个所有连接字符串都以前一种格式定义的团队项目这一事实,这不会有什么大不了的。显然我很难接受它不应该再工作了,所以我花了几个小时分析和重新安装几个 SQL Server 版本,但无济于事。 (并且正在破坏 VS2010 中的数据库项目,所以我也需要重新安装......)。

但这里是细节。如前所述,我无法连接到localhost\sqlexpress,而是连接到.\sqlexpress。使用 SQL Server 管理器以及用于部署和运行 wcf 服务的连接字符串时出现相同的症状。有趣的是,将默认实例解析为 localhost 有效。

首先,是的,SQL Server 正在运行,只是为了确保我启用了 TCP/IP 并将端口设置为固定为 1433,尽管它可以在我同事禁用 TCP/IP 的机器上运行。 (在某处我读到localhost 可以在使用本机 SQL 客户端时使用共享内存来解决,所以我猜这就是他的系统上发生的事情。)

设置只有一个 SQL Server Express 2008 R2 实例和 Windows 7 Professional 上的 VS2010。

启动 Sql express 错误日志说:

Server is listening on [ 'any' <ipv6> 1433].
Server is listening on [ 'any' <ipv4> 1433].

Netstat 说(摘录):

TCP    0.0.0.0:1433           Machinenename:0             LISTENING
TCP    [::]:1433              Machinenename:0             LISTENING

我注意到端口 1433 上没有 127.0.0.1:1433 和任何 UDP

为了诊断问题,我使用 sqlcmd 来找出使用的传输方式:

1.本地主机\sqlexpress

sqlcmd -Slocalhost\sqlexpress  -> Shared memory
sqlcmd -Stcp:localhost\sqlexpress ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

即使我将共享内存指定为协议,也无法从 SQL Server Management Studio 连接到 localhost\sqlexpress

2。本地主机

sqlcmd -Slocalhost -> TCP
sqlcmd -Stcp:localhost -> TCP

可以从 SQL Server Management Studio 连接到本地主机

3. (本地)\sqlexpress

sqlcmd -S(local)\sqlexpress  -> Shared memory
sqlcmd -Stcp:(local)\sqlexpress  ->  SQL Server Network Interfaces: Error Locating Server/Instance Specified

可以从 SQL Server Management Studio 连接到(本地)\sqlexpress

所以我在这里迷路了。非常感谢任何帮助。

【问题讨论】:

    标签: sql sql-server sql-server-2008 connection-string localhost


    【解决方案1】:

    我们遇到了这个问题。出于某种原因,在这台机器上创建了一个别名,将我们正在使用的服务器名称 (localhost\SQL2008_R2) 指向一个不再存在的服务器。

    一旦我们删除了别名,它就一切正常了。

    别名是 SQL Server 配置管理器中的一个树节点。

    【讨论】:

      【解决方案2】:

      在 MS SQL 中,转到配置工具 -> SQL Server 配置管理器 选择 SQL Server 网络配置 -> 选择协议 在右侧窗口中启用 tcp/ip 并重新启动 services.msc 中的服务 然后尝试连接到 localhost\sqlexpress

      【讨论】:

        【解决方案3】:

        您是否验证了在 SQL Server 配置管理器中的 SQL Server 网络配置下启用了共享内存?协议?

        当我禁用“共享内存”协议时,“sqlcmd -S.\sqlexpress”会超时。启用它会使命令正常工作。

        再想一想... 端口 1434 用于 SQL Server 发现服务,它可以让 SQL Management Studio 等程序发现 SQL Server 正在机器上运行。还有一件事要调查。

        【讨论】:

          猜你喜欢
          • 2020-12-03
          • 2012-01-13
          • 2016-12-13
          • 2020-03-10
          • 1970-01-01
          • 1970-01-01
          • 2021-10-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多