29

我正在尝试连接到 MDF。我什至不遗余力地重新安装了 sql server express(它现在是我的盒子上安装的唯一一种 SQL,以前我有 05 dev 和 express)。我已经验证了路径都是正确的,到目前为止我的 google-fu 没有帮助。

完整的异常消息是:

由于启动用户实例的进程失败,无法生成 SQL Server 的用户实例。连接将被关闭。

连接字符串是:

<add name= "CustomerEntities"
     connectionString="metadata=res://*/Data.CustomerModel.csdl|res://*/Data.CustomerModel.ssdl|res://*/Data.CustomerModel.msl;
     provider=System.Data.SqlClient;
     provider connection string='Data Source=.\SQLEXPRESS;
     AttachDbFilename=\App_Data\CustomerDb.mdf;
     Integrated Security=True;
     User Instance=True'"
     providerName="System.Data.EntityClient" />

附加信息:

我在网上找到的几个关于这个错误的引用并不适用于我。例如,我看到的一个错误是在尝试通过远程桌面启动用户实例时发生此错误(我在本地执行此操作)。而另一个建议它与旧快速安装的剩余文件有关......我查看了规定的位置并没有找到那些工件。我也试过运行sp_configure 'user instances enabled', '1',但它说它已经设置为1。

4

11 回答 11

72

好的,现在可以使用了!猜想这是一个复杂的问题......我为解决它所采取的步骤是这样的:

  1. 更改了连接字符串中的以下属性(注意细微差别):AttachDbFilename=|DataDirectory|CustomerDb.mdf;
  2. 删除了以下目录的内容:c:\Users\<user name>\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS. 我以为我以前找过这个,但实际上我在Microsoft Sql Server文件夹中查看过。再次,细微的差别。

一旦我做了这两件事,连接就开始工作了:-D

于 2008-11-11T17:47:36.727 回答
6

当我将代码从一台机器移动到另一台机器时,我遇到了同样的错误。我正在使用 VS2010 和 SQLEXPRESS 2008 附带它。

技巧,从以下文件夹中删除所有内容 "C:\Users\UserName\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS" 对我有用。

于 2014-01-08T11:50:23.247 回答
5

尽管上面的答案解决了很多人的问题,但我仍然发现这些没有解决问题的本质。最接近它的是上面@sohaiby 的答案。但它错误地指的是使用 Management Studio。

该主题顶部的错误消息非常清楚地表明问题在于生成用户实例。这里详细描述了实例是什么以及如何使用它: https ://msdn.microsoft.com/en-us/library/ms254504(v=vs.110).aspx

就个人而言,我在将 DB 连接从 windows 身份验证模式切换到 SQL Server 身份验证时遇到了这个问题。我通过将连接字符串的一部分修改为:“User Instance=false;”来解决它 而不是“User Instance=true;”,它适用于 Windows 身份验证。

在我更改为“User Instance=false;”之后 我的连接工作正常,没有任何额外的操作。我不能坚持认为它会起作用或适用于所有场景。但是,我肯定会建议在上述其他极端方法之前尝试它,例如擦除 SQL Server 工作目录。

于 2015-12-24T16:09:14.960 回答
1

除了此处的其他解决方案外,此解决方案也可能会有所帮助。确保应用程序池作为网络服务运行,而不是 ApplicationPoolIdentity。

在这里找到了这个解决方案:http: //blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-文件.aspx

于 2011-08-22T13:31:05.173 回答
0

正如其他人所指出的,删除目录的内容: c:\Users\\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS 为我解决了这个问题。可能有助于其他人的注释,在 Windows 7 上,从文档浏览器浏览 c:\users\username 目录并没有显示 AppData 文件夹,这让我暂时离开(因为我认为我没有 AppData 目录)直到我发现它确实存在(但在 Windows 7 的文档浏览器中没有显示),您只需输入完整路径名即可访问它。

于 2012-06-01T07:44:31.760 回答
0

我今天早上在测试部署环境中开始收到此错误。我使用的是 SQL Server Express 2008,我得到的错误是

“由于启动用户实例的进程失败,无法生成 SQL Server 的用户实例。连接将被关闭。”

不确定是什么原因造成的,我按照这篇文章和其他文章中关于删除“C:\Users\UserName\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS”目录的说明进行操作,但无济于事。

对我来说诀窍是改变连接字符串

"Data Source=.\SQLExpress;Initial Catalog=DBFilePath;Integrated Security=SSPI;MultipleActiveResultSets=true"

"Data Source=.\SQLExpress;Initial Catalog=DBName;Integrated Security=SSPI;MultipleActiveResultSets=true" 
于 2013-06-13T16:14:18.493 回答
0

我在 Windows 窗体应用程序中使用我的 mdf 文件来解决这个问题,我只是重新启动我的计算机,我的问题就解决了。

于 2016-11-17T06:04:00.943 回答
0

只需转到 web.config 文件。将 'Connection String'="....../.../......?.......; User Instance= True '" 更改为 "....../. ../......?.......; 用户实例= False '"

是的,这可能会导致一些安全问题,但对于一些学校/学院的实际项目(我的情况),这可以运行您的项目。

web.config中从 User Instance=True 更改为 User Instance=False

于 2020-03-24T16:19:44.773 回答
0

我在使用 SqlLocalDB 和 SqlExpress 时遇到了这个问题。 问题的原因: 当我从 Visual Studio 连接到 localdb 时,会为其启动一个 LocalDB 实例并作为我们的 Windows 帐户运行。但是,当在 IIS 中作为“网络服务”或“AppPoolIdentity”运行的 Web 应用程序连接到 LocalDB 时,会为其启动另一个 LocalDB 实例并作为“网络服务”或“AppPoolIdentity”运行。因此,即使 Visual Studio 和 Web 应用程序都使用相同的 LocalDB 连接字符串,它们也会连接到不同的 LocalDB 实例。显然,在我们的 LocalDB 实例上从 Visual Studio 创建的数据库在 Web 应用程序的 LocalDB 实例中将不可用。 解决方案: 所以,在这里我列出了两种情况的解决方案(即)SqlExpress 和 LocalDB 如果我们使用 LocalDB 作为数据源:

  1. 将应用程序池标识设置为“网络服务”
  2. 更新applicationHost.config文件以包含以下突出显示的设置:

<processModel identityType="NetworkService" loadUserProfile="true" setProfileEnvironment="true" />

  1. 通过在管理员模式下在 CMD.exe 中运行以下命令将 SqlLocalDB 更改为共享实例 SqlLocalDB.exe share "MyLocalDB" "MySharedLocalDB"

(这里“MyLocalDB”是我的本地数据库实例。您可以通过在管理员模式SqlLocalDB.exe中的 CMD.exe 中执行以下命令来找到相同的 )因此,我的连接字符串如下: <add name="DefaultConnection" connectionString= "数据源=(localdb)\.\MySharedLocalDB ;AttachDbFilename=|DataDirectory|\aspnet-DemoSite-20200716010415.mdf;初始目录=aspnet-DemoSite-20200716010415;用户ID=sa;密码=welcome123;用户实例=false

  1. 由于我在 IIS 中托管应用程序,因此我确保帐户“NT AUTHORITY\NETWORK SERVICE”具有对应用程序根文件夹的读/写访问权限以避免“访问被拒绝”异常,并启用该帐户作为系统管理员通过执行访问 SqlInstance下面的 SQL 查询 exec sp_addsrvrolemember 'NT AUTHORITY\NETWORK SERVICE', sysadmin

如果我们使用 SqlExpress 作为数据源:

1.确保连接字符串具有正确的值,如下所示: <add name="DefaultConnection" connectionString=" Data Source=.\SQLEXPRESS ;AttachDbFilename=|DataDirectory|\aspnet-DemoSite-20200716010415.mdf;Initial Catalog=aspnet- DemoSite-20200716010415;User ID=sa;Password=welcome123;User Instance=false" 2.如上图所示,删除位于 C:\Users<userName>\AppData\Local\Microsoft\Microsoft SQL Server Data\ 中的旧文件SQLEXPRESS

于 2020-07-10T12:37:52.313 回答
-1

要解决此问题,请打开 SQL Server Management Studio Express。在查询编辑器中输入以下文本:

sp_configure 'user instances enabled', 1;
 RECONFIGURE

运行。然后重新启动 SQL Server 数据库。

于 2014-07-21T12:01:09.267 回答
-2

您是否尝试过使用 SQL Management Studio 连接到 SQL Server 实例?

如果这也不允许您连接,则可能是因为 SQL 服务未正确启动。

通过检查控制面板中的服务来验证服务是否正在运行。

于 2008-11-11T17:17:22.937 回答