![无法生成 SQL Server 的用户实例](https://linux22.com/image/481091/%E6%97%A0%E6%B3%95%E7%94%9F%E6%88%90%20SQL%20Server%20%E7%9A%84%E7%94%A8%E6%88%B7%E5%AE%9E%E4%BE%8B.png)
我正在使用 Windows 7 Beta 并尝试在本地安装 Web 应用程序。此网站使用Microsoft SQL Server 2005 Express(SQLEXPRESS)和网站的 ~/App_Data 文件夹中的 MDB 文件。我被指示配置 IIS7 以使用经典 .NET AppPool对于该 Web 应用程序。
每次加载网站时,我都会收到以下错误:
尝试连接到数据库服务器时出错:由于无法检索用户的本地应用程序数据路径,因此无法生成 SQL Server 的用户实例。请确保用户在计算机上拥有本地用户配置文件。连接将关闭。
互联网上充斥着关于这个主题的文章。主流观点似乎是:
- 配置 SQL Express 服务以使用本地系统帐户。
- 删除以下目录:C:\Users\用户名\AppData\Microsoft\Microsoft SQL Server Data\SQLEXPRESS
这些修复都没有任何效果。我花了几个小时修改权限和设置,但毫无效果。有人能建议修复方法或帮助我了解如何获取有关该问题的更多详细信息吗?
答案1
在 Windows 7 下的 IIS 中,选择应用程序池,然后选择“高级设置”。在“进程模型”下找到“加载用户配置文件”并将其设置为 true。
SQL 现在应该在默认应用程序池帐户下加载。
答案2
我在工作站上遇到过同样的问题,但在服务器上从未遇到过。
这是我之前在网上找到的一个临时修复方法,它似乎有效:
在查询编辑器中输入:exec sp_configure'已启用用户实例', 1 然后:重新配置
然后重新启动 SQL Server 数据库。
找到了这个关联今天
在 StackOverflow 上快速搜索后https://stackoverflow.com/questions/281500/error-failed-to-generate-a-user-instance-of-sql-server
答案3
布莱恩,
为了使这一切有意义,首先查看任务管理器上所有用户的进程列表。
w3wp.exe 是新的 WWW 工作进程。它使用名为 DefaultAppPool 的用户权限在安全沙箱中运行。
在过去,不是 DefaultAppPool 用户,而是 IUSR 和 IWAM 用户(请参阅IIS 中的 IUSR 和 IWAM 帐户有什么用处?)。
当您使用 SQL 成员资格提供程序时,w3wp.exe 进程将启动 SQL Server 用户实例并附加到连接字符串中指定的数据库,通常是 App_Data/ASPNETdb.mdf。运行 SQL Server 的用户实例需要本地配置文件,以便临时文件有地方存放。
故障排除步骤:
- 确保进程 w3wp.exe 由 DefaultAppPool 用户运行。
- 确保 SQL Server 已启用用户实例(请参阅配置值和 run_value)
exec sp_configure 'user instances enabled'
- 如果不执行
则:重新配置sp_configure 'user instances enabled', 1
- 重新启动 SQL Server,以防 ASPNETdb.mdf 由 SQL Server 的不同用户实例附加。
- 确保本地用户配置文件 C:\Users\DefaultAppPool 目录存在。如果不存在,请打开 LocalProfile=True,这将创建本地配置文件。这可以在 IIS 管理器、应用程序池、DefaultAppPool、高级设置中完成...
- 如果您对数据库还有其他问题,请使用 SQL 配置管理器连接到用户实例,并查看数据库是否已附加。您需要连接到正确的实例_管道_名称。
SELECT owning_principal_name, instance_pipe_name, heart_beat FROM sys.dm_os_child_instances