1

我已经检查了实例名称,自动关闭设置为 true,检查了允许服务器上的远程连接。当我打开 SQL Server 配置管理器时,服务器正在运行。我什至已经重新启动。我以与所有其他人相同的方式创建了这个数据库。我使用实体框架并检查了其中的名称web.config并且它们匹配。这是向导中的默认连接字符串 - 我在部署之前用于测试。我只是想不出其他任何东西来检查它为什么无法连接。在 SQL Server 中工作一切都很好。

这是一般错误。

与 SQL >Server 建立连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,并且 SQL Server 已配置为允许远程连接。(提供程序:共享 > 内存提供程序,错误:40 - 无法打开与 SQL Server 的连接)

配置:

connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string='data source=.\SQL_1;attachdbfilename="C:\Program Files (x86)\Microsoft SQL Server\MSSQL10_50.SQL_1\MSSQL\DATA\A_db.mdf";integrated security=True;connect timeout=10;user instance=True;multipleactiveresultsets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />

提前致谢。

4

2 回答 2

1

让我先说一下这个答案,正确设置 SQL 实例并不像微软希望你用实体框架想象的那么容易。这有点复杂,需要你戴上你的 DBA 帽子。

您遇到的错误表明 Web 实例正在尝试使用 Windows 集成安全性连接到 SQL 服务器。如果 (a) 进程正在运行的 windows 用户(可以在 IIS 中配置)被授权登录到 SQL 服务器并且在数据库中具有有效的登录名,并且 (b) 如果 SQL 服务器与 IIS 服务器在同一台机器上或同一域中。

鉴于此,我建议使用 SQL Server 身份验证。如果您需要知道如何执行此操作,我建议您搜索“SQL Server 身份验证设置” - 这是我发现的一篇文章,它可能会帮助您进行设置。

http://msdn.microsoft.com/en-us/library/aa337562.aspx

一般来说,我建议采取以下措施:

  1. 使用 MS SQL Management Studio 连接到 sql 服务器。
  2. 永久附加您的数据库,然后在您的连接字符串上使用该Initial Catalog属性,而不是AttachDbFileName
  3. 然后在 SQL 服务器上设置您的登录用户名和密码,并在数据库中为其创建一个登录名。
  4. 确保您的登录名只能执行您希望它执行的存储过程。拒绝它访问正在运行的 sql 语句。

您还需要将用户名和密码添加到连接字符串,并设置 IntegratedSecurity=false。

正确设置 SQL 服务器后,请告诉我们情况如何。

于 2012-12-31T04:02:35.413 回答
0

此错误意味着您的提供程序代码找不到 SQL Server。如果您检查了服务器实例名称(应该是<yourLocalServer>\SQL_1),那么它可能是attachdbfilename=参数,因为这是指定要连接的数据库的一种非常不可靠的方式(您应该使用数据库名称,而不是文件名),因为大约有一百个与您的应用程序无关的文件名可能更改的原因。

于 2012-12-30T06:00:17.503 回答