无法连接到 SQL Server Express 2012/2016 上的本地主机

120

我刚刚下载了最新版本的SQL Express 2012,但我无法连接到本地主机。 我尝试了localhost\SQLExpress和Windows身份验证,但它给出了一个错误信息,说无法连接。 我错过了什么吗? 我以前使用过SQL Server 2008,从来没有连接到本地主机的问题。 它似乎连找不到它。另外,在服务中我只看到了SQL Server VSS Writer。 是这样应该的吗? 还是我错过了什么? 谢谢


1
安装似乎没有成功。你尝试过修复/重新安装吗? - Vikdor
1
你确定找到了服务器的安装程序,而不是管理工具的安装程序吗? - Damien_The_Unbeliever
14个回答

218

根据Aaron Bertand的说法

  1. 您需要验证 SQL Server 服务是否正在运行。您可以通过转到 开始>控制面板>管理工具>服务,并检查服务 SQL Server (SQLEXPRESS) 是否正在运行来执行此操作。如果没有,请启动它。

  2. 在您打开服务 applet 后,还要确保服务SQL Browser已启动。如果没有,请启动它

  3. 您需要确保 SQL Server 可以使用 TCP/IP 或命名管道。您可以通过在开始>程序>Microsoft SQL Server 2012>配置工具(或SQL Server Configuration Manager)中打开 SQL Server 配置管理器,并确保启用了 TCP/IP 和命名管道来启用它们。如果在“开始”菜单中找不到 SQL Server 配置管理器,则可以手动启动 MMC 快照。根据您的版本,检查SQL Server 配置管理器以获取快照的路径。

    SQL Server Configuration Manager

  4. 确认 SQL Server 连接的身份验证模式与您的连接字符串匹配:

    • 如果您正在使用用户名和密码进行连接,则需要配置 SQL Server 接受“SQL Server 身份验证模式”:

      -- YOU MUST RESTART YOUR SQL SERVER AFTER RUNNING THIS!
      USE [master]
      GO
      DECLARE @SqlServerAndWindowsAuthenticationMode INT = 2;
      EXEC xp_instance_regwrite
        N'HKEY_LOCAL_MACHINE',
        N'Software\Microsoft\MSSQLServer\MSSQLServer',
        N'LoginMode',
        REG_DWORD,
        @SqlServerAndWindowsAuthenticationMode;
      GO
      
      如果你是使用"Integrated Security=true"(Windows模式)进行连接,并且在Web应用程序中调试时出现此错误,则需要将ApplicationPoolIdentity添加为SQL Server登录,具体方法请参考如何将ApplicationPoolIdentity添加到SQL Server登录中
      否则,请运行开始 -> 运行 -> Services.msc。如果服务未运行,则说明可能没有正确安装所有必要的组件。请启动安装文件并选择“新安装或向现有安装添加功能”选项,然后确保数据库引擎服务被安装。

2
@dido:Start->Run->Services.msc - Ravindra Bagale
3
另一个需要检查的是实例名称。根据SQL Server的安装方式,您可能需要在主机后面提供实例名称,也可能不需要。 - Arvo Bowen
7
这很愚蠢,但对我来说,问题在于使用“localhost”作为服务器名称,而不是安装中设置的“localhost\SQLEXPRESS01”。 - Guy s
1
在我的情况下,SQLBrowser 被禁用了,并且配置工具没有列在 SQL 工具文件夹中。通过 cmd 启动配置工具:https://learn.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager?view=sql-server-2017 如果配置工具无法启动,则自动启动 SQLBrowser:https://dev59.com/c2Ei5IYBdhLWcg3wWLES - steven87vt
将用户添加并将其权限设置为db_owner解决了我的问题。 - AriBaa Games
显示剩余5条评论

160

转到开始->程序->Microsoft SQL ServerYYYY->配置工具->SQL Server YYYY配置管理器或运行"SQLServerManager12.msc"。

确保在客户端协议下启用了TCP/IP。

然后进入"SQL Server网络配置",双击TCP/IP。单击"IP地址"选项卡并向下滚动。如果"IP All"下存在TCP动态端口,请删除它,并将TCP端口设置为1433。单击"确定",然后返回到"SQL Server服务"并重新启动SQL Server实例。现在您可以通过localhost连接,至少我可以。

输入图像描述

请注意,当从其他应用程序连接时,此错误也可能发生。例如一个正常的C# web应用程序的Web.config连接字符串:

<connectionStrings>
    <add name="DefaultConnection" connectionString="server=localhost;database=myDb;uid=myUser;password=myPass;" />
</connectionStrings>

24

在SQL SERVER EXPRESS 2012中,您应该使用"(localdb)\MSSQLLocalDB"作为数据源名称,例如,您可以使用这样的连接字符串:

Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;

3
好的!使用(localdb)\MSSQLLocalDB连接 SSMS 能够正常工作,而localhost无法连接。 - Ben
也为我工作 - ayush mishra
它也是 SQL Server Express 2019 的默认本地数据库连接。 - MB_18

21

首先尝试使用Ravindra Bagale提供的最受欢迎的解决方案。

如果您从本地主机连接到数据库仍然失败,并出现类似以下错误:

无法连接到SQL Server数据库。 错误:TCP/IP连接到主机[IP地址],端口1433失败。错误:“连接被拒绝: 连接。验证连接属性。确保SQL Server实例在主机上运行,并正在接受端口的TCP/IP连接。确保防火墙不会阻止对端口的TCP连接。”

  1. 打开SQL Server配置管理器。
  2. 展开要查询的服务器实例的SQL Server网络配置。
  3. 双击“TCP/IP”。
  4. 在“协议”部分下,将“启用”设置为“Yes”。
  5. 在“IP地址”部分下,在“IP所有”中设置TCP端口(默认为1433)。
  6. 在“IP地址”部分下,找到IPv4地址为127.0.0.1和IPv6地址为::1的子部分,将“启用”和“活动”都设置为“Yes”,并将TCP端口设置为1433。

    TCP/IP属性

  7. 转到开始 > 控制面板 > 管理工具 > 服务,并重新启动SQL Server服务(SQLEXPRESS)。


1
在来到这里之前,我尝试了上面提供的其他解决方案。但是这个解决方案对我很有用!此外,我发现下载一个叫做psping的工具帮助我测试连接。例如:psping 127.0.0.1:1433 - KANJICODER
直到我在IP4上设置了IP地址“127.0.0.1”和端口“1433”,它才对我起作用。 - xinthose

11
我曾经遇到过类似的问题,也许我的解决方案可以帮助你。我刚刚安装了MSSQL EX 2012(默认安装),并尝试使用VS2012 EX连接。但是没有成功。然后我查看了服务,确认SQL Server(SQLEXPRESS)确实正在运行。
然而,我发现了另一个有趣的被禁用的服务,称为SQL Server Browser。我启用了它,并启动了它,然后能够在VS2012 EX的新连接中检索服务器名称并连接。
很奇怪他们会禁用VS连接所需的服务。

不需要连接;我已经禁用了它,而且我可以正常连接。当你不知道要连接的精确主机/实例名称时,它只是使事情变得更容易,因为它允许其他软件查询这些信息。 - Simon Morgan

10

首先检查SQL Server服务是否正在运行或已停止,如果已停止,请启动它。请按以下步骤执行。

1.开始 -> 运行 -> services.msc

enter image description here

  1. 在服务面板的“标准”选项卡中搜索SQl Server(SQL2014)

“SQL2014”是我提供的名称,在您的情况下可能是其他名称

enter image description here

这样一来,一旦您启动SQL服务,就可以连接本地数据库了。

希望这能帮助到某些人。


8

我所有的服务都正常运行,但仍无法连接。

我不得不在SQL Server配置管理器中更新TCP/IP属性部分,为我的SQL Server Express协议设置IPALL端口为1433,以便如预期地连接到服务器。

输入图像描述


8

在按照 @Ravindra Bagale 提到的步骤后,尝试以下步骤。服务器名称:localhost\{您输入的实例名称}

输入图像描述


3

尝试从Windows身份验证切换到混合模式


2
对于我来说,问题在于我没有指定.\。我只指定了实例的名称:
  • 无效:SQL2016
  • 有效:.\SQL2016

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接