错误:无法生成SQL Server的用户实例

时间:2008-11-11 17:08:00

标签: visual-studio sql-server-express sql-server-2008-r2 user-instance

我正在尝试连接到MDF。我甚至完全重新安装了sql server express(它现在是我的盒子上安装的唯一SQL的味道,之前我有05开发和快递)。我已经证实路径都是正确的,到目前为止我的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。

11 个答案:

答案 0 :(得分:69)

好的,它现在有效!猜测这是一个复合问题...我采取的解决方法就是这样:

  1. 更改了连接字符串中的以下属性(请注意细微差别):AttachDbFilename=|DataDirectory|CustomerDb.mdf;
  2. 删除了以下目录的内容:c:\Users\<user name>\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS。之前我以为我曾经找过这个,但我实际上看过Microsoft Sql Server文件夹。再次,一个微妙的区别。
  3. 一旦我做了这两件事,连接就开始起作用了:-D

答案 1 :(得分:5)

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

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

就个人而言,我在将数据库连接从Windows身份验证模式切换到SQL Server身份验证时遇到了此问题。我只是通过修改连接字符串的一部分来解决它:“User Instance = false;”而不是“User Instance = true;”,这对Windows身份验证工作正常。

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

答案 2 :(得分:4)

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

诀窍,删除以下部分中的所有内容“C:\ Users \ UserName \ AppData \ Local \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS”为我工作。

答案 3 :(得分:0)

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

此解决方案可在此处找到:http://blogs.msdn.com/b/webdevelopertips/archive/2010/05/06/tip-106-did-you-know-how-to-create-the-aspnetdb-mdf-file.aspx

答案 4 :(得分:0)

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

答案 5 :(得分: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”

答案 6 :(得分:0)

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

答案 7 :(得分:0)

只需转到web.config文件。将“连接字符串” =“ ...... / ... / ......?.......;用户实例= '”更改为“。 ..... / ... / ......?.......;用户实例= 错误'“

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

web.config

中从User Instance = True更改为User Instance = False

答案 8 :(得分: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 文件更新为包括以下突出显示的设置:

loadUserProfile =“ true” setProfileEnvironment =“ true” />

  1. 通过在admin模式下在CMD.exe中运行以下命令,将SqlLocalDB更改为共享实例 SqlLocalDB.exe共享“ MyLocalDB”“ MySharedLocalDB”

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

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

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

1。确保连接字符串的正确值如下: 数据源=。\ SQLEXPRESS ; AttachDbFilename = | DataDirectory | \ aspnet-DemoSite-20200716010415.mdf;初始目录= aspnet-DemoSite-20200716010415;用户ID = sa; Password = welcome123; User Instance = false“ 2.如在Jane上面突出显示的,删除位于C:\ Users <用户名> \ AppData \ Local \ Microsoft \ Microsoft SQL Server Data \ SQLEXPRESS

中的旧文件

答案 9 :(得分:-1)

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

sp_configure 'user instances enabled', 1;
 RECONFIGURE

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

答案 10 :(得分:-2)

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

如果这也不允许你连接那么可能是因为SQL服务没有正确启动。

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