我在使用IIS 7.5中的ApplicationPoolIdentity连接到Northwind数据库的SQL Server 2008 R2 Express时遇到问题,导致出现以下错误消息:
Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. The connection will be closed.
注释:
如果我将ApplicationPoolIdentity用户更改为有权访问数据库的其他用户,则可以使用。
其他信息:
连接字符串:
<connectionStrings>
<add name="NorthwindEntities" connectionString="metadata=res://*/NorthwindModel.csdl|res://*/NorthwindModel.ssdl|res://*/NorthwindModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=NOTEBOOK\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
有人可以帮我解决这个问题吗?
感谢您的建议。
答案 0 :(得分:1)
看起来您正在尝试使用SQL Server Express的"user instancing"功能,即您的连接字符串如下所示:
AttachDBFilename=|DataDirectory|xxxxxx.mdf;User Instance=true
这对IIS7.5中的ApplicationPoolIdentity
帐户无效。有关详细信息,请参阅此MS知识库文章:
Problems with SQL Server Express user instancing and ASP.net Web Application Projects
使用Visual Studio 2005,Visual Studio 2008或 Visual Studio 2010,依赖于用SQL实例化的用户实例 Server Express 2005或SQL Server Express 2008无法使用 新的应用程序池标识。这些产品是开发和 针对使用旧版NETWORK运行的应用程序池进行测试 服务帐户。
此外,Microsoft discourage现在使用此功能:
将在Microsoft SQL的未来版本中删除此功能 服务器。避免在新的开发工作中使用此功能,并计划 修改当前使用此功能的应用程序。
如果您还没有这样做,我会将数据库attach改为SQL Express并使用常规SQL连接字符串,就像您在生产环境中一样。您可能需要使用SQL Server配置管理器为SQL Express实例启用TCP / IP(如果尚未启用):
确保在该对话框的下一个标签页上配置了端口1433。