无法连接Entity Framework到本地SQL Server Express

3

我有连接字符串:

  <connectionStrings>
    <add name="SolrLocal" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLExpress;Initial Catalog=SpeedOfLightRailDB;Integrated Security=true" />
  </connectionStrings>

但我遇到了错误:
“在建立与SQL Server的连接时发生了一个与网络相关或特定于实例的错误。 未找到服务器或无法访问。 确认实例名称是否正确,并且已配置SQL Server以允许远程连接。 (提供程序:SQL Network Interfaces,错误:26-定位服务器/指定实例时出错)”
这是我第一次使用SQL Server Express,所以我可能会漏掉一些明显的东西...
有人能否至少确认这是Entity Framework -> SQL Sever Express应该看起来像的连接字符串? 我一直在更改它,试图让它工作。

1
请确保 MS SQL Server 服务正在运行。只需转到控制面板>管理工具>服务,然后尝试查找“sql...”服务。确保其状态为“正在运行”。另一个提示是在数据源字段中使用网络计算机的名称,而不是点号,例如:“Hardworker\sqlexpress;...”。 - Anton Norko
你能通过 SSMS 连接到那个盒子上的 .\SQLExpress 吗? - Chaim Eliyah
你的 Web 服务器和 SQL Server 是否在同一台服务器上? - Nick.McDermaid
与SSMS连接无法进行。 - RJB
3个回答

2
  1. 检查您的Windows服务,并确保SQL Server Express Windows服务正在运行。您可以通过在RUN命令栏(Windows键+R)中运行services.msc来进入服务。如果未运行,则启动它。
  2. 您是否安装了SQL Server管理工具?如果是,您可以尝试使用这些工具进行连接。如果无法从那里连接到SQL Server Express实例,则很可能也无法从代码中连接。如果您没有安装此软件,则无需担心,您仍然可以通过下一步进行测试。
  3. 如果您需要帮助构建连接字符串,则可以尝试下一步操作。在桌面上创建一个文本文件。将扩展名从.txt重命名为.udl。打开文件,您将获得数据链接属性屏幕,请从第一个选项卡开始(默认为选项卡2),然后填写第二个选项卡。测试连接正常后,您可以使用NotePad打开该文件或将扩展名改回.txt并在NotePad中打开。
  4. 连接字符串将在文本文件的第二行。只需将其复制并粘贴到.config文件中即可。

如果所有这些方法都无法解决问题,请反馈您的发现和任何错误信息。


在服务中,有 SQL Server (SQLEXPRESS)SQL Server Agent (SQLEXPRESS),但尝试启动前者会出现错误:“Windows 无法在本地计算机上启动 SQL Server (SQLEXPRESS)。有关更多信息,请查看系统事件日志...”。 - RJB
据我所知,从eventvwr.exe来看,它所指的错误可能是:“初始化FallBack证书失败”,但日志中还有其他一些SQLEXPRESS错误。 - RJB
@RJB - 我在 MSDN 论坛上找到了一个问题:SQL Server not starting - FallBack certificate initialization failed。你能看看这个答案是否有助于解决服务无法启动的问题吗? - Igor

1

试试这个:

<connectionStrings>
    <add name="SolrLocal"
        providerName="System.Data.SqlClient"
        connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SpeedOfLightRailDB;Integrated Security=True;MultipleActiveResultSets=True"/>
</connectionStrings>

另外,请检查在SQL Server Management Studio中是否可以访问“.\\SQLEXPRESS”,并且在SQL Server配置管理器中是否配置了允许远程连接的SQL Server。

enter image description here

可以通过命令行启动,命令如下:C:\Windows\SysWOW64\mmc.exe /32 C:\Windows\SysWOW64\SQLServerManager12.msc


1
你正在使用 .\SQLExpress,我认为你的本地服务器名称不同。你可以打开 SQL Server ,然后在连接时查看所使用的服务器名称。您必须在 web.config 中输入相同的名称。请参考下面的图像,其中显示了连接到 SQL Server 时的服务器名称,在我的情况下,我需要用 RAJSHEKAR-PC\SQLEXPRESS 替换 .\SQLExpress

enter image description here


1
.localhost都表示“连接到本地主机”。不需要输入主机名。 - Nick.McDermaid
这取决于安装方式。在安装过程中,我们可以将其设置为“.”、“localhost”或主机名。由于它是安装在本地计算机上的,因此仅通过说“.”和“localhost”是永远无法连接的。这取决于安装方式。 - Rajshekar Reddy
胡言乱语。如果你进入cmd并键入ping localhost,你会发现它会ping回你的本地电脑。它们都指向同一个东西。 - Nick.McDermaid
但是,它确实取决于安装。如果他们将默认实例名称从 SQLExpress 更改为 myinstance,那么服务器名称必须是 localhost\myinsance - Nick.McDermaid
我查看了您上面的评论,是的,您是正确的。感谢您提供的信息,伙计。但是我发布了这个解决方案,因为当我们从Web应用程序打开连接时,情况并非总是如此。使用“.”或“localhost”时,主机名并不总是能够解析。 - Rajshekar Reddy
1
可能是因为您的Web服务器在不同的服务器上。因此,在这种情况下,您需要使用完全限定名称。如果OP的Web服务器在不同的服务器上,那么您完全是正确的,但他没有给我们任何线索。 - Nick.McDermaid

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