MSSQL错误:“底层提供程序打开失败”

245

我之前在使用.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" />

因为我总是遇到以下错误:

底层提供程序在打开时失败


2
当我尝试在IIS下运行时,我遇到了同样的问题。如果我在VS服务器中运行,则不会出现错误。 - Zote
14
我遇到了相同的问题并从连接字符串中删除了 Integrated Security,创建了一个用户并确保他们拥有 sysadmin 权限,并将该用户添加到连接字符串。 - fulvio
我曾经遇到过这个问题,后来通过在连接字符串中插入密码解决了它。 - satyrFrost
当我在IIS下运行时,简单地移除集成安全性就解决了我的问题。 - Jon
另请参阅:https://dev59.com/f2035IYBdhLWcg3wcvqS#5416812 - 可能您没有像我一样创建数据库 :( - VMAtm
显示剩余2条评论
31个回答

0

我已经解决了这个问题。

步骤1: 打开Internet信息服务管理器

步骤2: 在左侧导航树中单击应用程序池。

步骤3: 选择您的版本池。在我的情况下,我正在使用ASP .Net v4.0。如果您没有此版本,请选择DefaultAppPool。

步骤4: 右键单击步骤3,然后选择高级设置。

步骤5: 在属性窗口中选择身份验证,并单击更改值按钮。

步骤6: 在内置帐户组合框中选择本地系统,然后单击确定。 就是这样。现在运行您的应用程序。一切正常。

Codeproject Solution : the-underlying-provider-failed-on-open


换句话说,如果你正在使用集成安全性,那么运行你的应用程序池的登录用户需要具有数据库访问权限。 - the berserker

0
一个常见的错误是,当我将应用程序从一台电脑移动到另一台电脑时,以上所有方法都不起作用,因为我忘记将连接字符串复制到 App.Config 和 Web.Config 文件中!

0

我遇到了这个问题,因为运行此应用程序的应用程序池登录已更改。

在IIS中:

  • 通过单击您的站点并转到基本设置来查找应用程序池。

  • 进入应用程序池。

  • 单击您站点的应用程序池。

  • 单击高级设置。

  • 在标识中,输入帐户登录和密码。

  • 重新启动您的站点,然后重试。


0

我之前也遇到了同样的问题。现在我通过从连接字符串中删除用户名和密码来解决了这个问题。


0

对我来说这只是一个简单的错误:

我使用了Amazon EC2,并在连接字符串中使用了我的弹性IP地址,但当我更改IP地址时,我忘记更新我的连接字符串。


0

我曾经遇到过类似的问题:在我的测试用例执行中,我总是得到这个错误。后来我发现,我的“分布式事务服务”没有启动(运行:services.msc -> 启动“分布式事务服务”(最好将其设置为自动启动))。之后,它就像魔法一样正常工作了...


0
我在我们的一个网站上突然遇到了这个错误。后来发现,SQL用户的密码已经过期了!在SQL Server Management Studio中取消勾选密码过期框就解决了问题!

0

0
在 IIS 中,将 App Pool Identity 设置为 Service Account 用户、管理员帐户或具有对该数据库执行操作权限的任何帐户。

0

当我从同步主控制台调用异步EF方法时(await被跳过),我会遇到这个错误。

因为异步打开连接是针对已经释放的数据上下文。

解决方案:正确调用异步EF方法。


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