关于数据库初始化的ado.net实体框架4.1错误40

时间:2012-11-26 23:51:44

标签: c# sql-server entity-framework networking sql-server-2008-r2

我正在使用ado.net实体框架4.1连接到我的计算机上的sql server 2008 r2 64位实例。 但是当我尝试初始化连接时,我得到以下异常:

  

{“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(provider:Named Pipes Provider,错误:40 - 无法打开与SQL Server的连接)“}

该实例的sql服务正在运行,也是sql浏览器。添加了1433端口和sql浏览器的例外。 在sql server配置管理器中,共享内存已启用,也称为管道和tcp / ip。

这些是我的app.config连接字符串: 使用用户和密码:

 <connectionStrings>
<add name="DbTerminalContext" connectionString="Data Source=URIEL\SQLIT64;Initial Catalog=IFDB;User Id=sa;Password=password;MultipleActiveResultSets=True"
  providerName="System.Data.SqlClient" />

这是使用Windows身份:

<add name="DbTerminalContext" connectionString="Data Source=URIEL\SQLIT64;Initial Catalog=IFDB;Trusted_Connection=True;MultipleActiveResultSets=True"
  providerName="System.Data.SqlClient" />

我尝试使用URIEL,。\ SQLIT64,也是localhost \ SQLIT64的insted,我根本无法连接。

我搜索并尝试了在这里和其他地方找到的各种解决方案。没有任何解决方案。 所以有人可以帮助我吗? 提前谢谢

2 个答案:

答案 0 :(得分:0)

检查Sql Server配置管理器中是否启用了NamedPipes

(开始 - &gt; SQL * - &gt;配置 - &gt; SQL Server配置管理器,然后单击“SQL Server网络配置”节点)。

答案 1 :(得分:0)

尝试将元数据资源信息添加到连接字符串。

假设您的实体数据模型名为“TerminalDataEntities.edmx”,则项目的obj \ Debug \ edmxResourcesToEmbed文件夹中会生成三个文件。

  • TerminalDataEntities.csdl
  • TerminalDataEntities.ssdl
  • TerminalDataEntities.msl

要将这些资源添加到连接字符串,您需要更改add-Tags connectionString-Value的格式。

元数据:

metadata=res://*/TerminalDataEntities.csdl|res://*/TerminalDataEntities.ssdl|res://*/TerminalDataEntities.msl;

提供者:

provider=System.Data.SqlClient;

和提供者连接字符串:

provider connection string=&quot;Data Source=URIEL\SQLIT64;Initial Catalog=IFDB;Trusted_Connection=True;MultipleActiveResultSets=True&quot;

全部放在一起:(使用Windows身份)

<add name="DbTerminalContext" connectionString="metadata=res://*/TerminalDataEntities.csdl|res://*/TerminalDataEntities.ssdl|res://*/TerminalDataEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=URIEL\SQLIT64;Initial Catalog=IFDB;Trusted_Connection=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

(没有Windows身份)

<add name="DbTerminalContext" connectionString="metadata=res://*/TerminalDataEntities.csdl|res://*/TerminalDataEntities.ssdl|res://*/TerminalDataEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=URIEL\SQLIT64;Initial Catalog=IFDB;User Id=sa;Password=password;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

希望这有效。