我使用。mdf来连接数据库和entityClient。现在我想改变连接字符串,这样就不会有.mdf文件了。

下面的connectionString是否正确?

<connectionStrings>
   <!--<add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;AttachDbFilename=|DataDirectory|\NData.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />-->
   <add name="conString" connectionString="metadata=res://*/conString.csdl|res://*/conString.ssdl|res://*/conString.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQL2008;Initial Catalog=NData;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

因为我总是得到错误:

基础提供程序在Open上失败


当前回答

我有这个错误突然发生在我们的一个网站上。在我的例子中,结果是SQL用户的密码过期了!在SQL Server Management Studio中取消密码过期框是有效的!

其他回答

我发现问题是,我在连接字符串中的一个变量中有服务器路径:

SERVER\SQLEXPRESS
SERVER

其实我应该:

.\SQLEXPRESS

由于某种原因,每当它难以定位SQL实例时,我就会得到错误。

你可以尝试替换元数据:

元= res: / / conString.csdl | res: / / conString.ssdl | res: / * / conString.msl

to:

元数据=因素:/ / * /;

我也有同样的问题,但对我有用的是从连接字符串中删除这个:

persist security info=True

为服务器机器上的SQL Server(和端口1433)定义一个新的Windows防火墙规则可以解决这个错误(如果您的服务器名、用户登录名或密码在连接字符串中没有错误…)。

我也面临着同样的问题。现在我已经从连接字符串中删除了用户名和密码。