【问题标题】:Unable to connect to SQL database in AppData when deployed to web server部署到 Web 服务器时无法连接到 AppData 中的 SQL 数据库
【发布时间】:2011-03-20 16:58:18
【问题描述】:

我有一个用 C# 编写的 ASP.Net 程序,它使用存储在 AppData 目录中的数据库,当我部署到 Win2008R2\SQl 2008 R2 服务器时,该程序在我的开发 (Win7\SQL 2008R2) 上完美运行无法连接到数据库。我正在使用下面的连接字符串。几个站点建议我将应用程序池设置为使用“网络服务”,因为这对 AppData 目录具有修改权限,我已经这样做了,但它仍然无法正常工作,另一个站点建议我将应用程序池设置为“加载用户配置文件 = True”但仍然没有快乐。

我正在努力尝试其他方法,有人可以帮忙吗?

数据源=.\SQLEXPRESS;集成 安全性=SSPI;AttachDBFilename=|数据目录|\DB.mdf;用户 实例=真

我得到“对象引用未设置为对象的实例。”在我的应用程序中,“尝试为文件 C:\inetpub\wwwroot\ADPhonebook\App_Data\DB.mdf 附加自动命名的数据库失败。存在同名的数据库,或者无法打开指定的文件,或者它是位于 UNC 共享上。”在应用程序事件日志中

非常感谢任何建议,谢谢。 史蒂文

【问题讨论】:

  • 你得到什么错误信息?
  • Can't access SQL Server file in the server machine 的副本。请参阅我的回答和建议(忘记 AttachDbFileName=/UserInstance= hack - 改为将 MDF 附加到 SQL Server 实例)
  • 当使用“server=Venus\SQLExpress;Database=DB.mdb;Integrated Security=SSPI”时,我得到“用户'NT AUTHORITY\NETWORK SERVICE'登录失败。原因:无法显式打开指定的数据库。[客户端:]”。有什么想法吗?谢谢
  • @StevenL:如果您像这样指定连接字符串,则必须指定不带 .mdb 扩展名的数据库名称(它必须是您附加的数据库的确切名称)。跨度>
  • @stevenL:数据库的名称只是一个名称(您在将文件附加到 SQL Server 时选择)- 没有扩展名(如文件或 MS-Access“数据库”)

标签: asp.net sql-server


【解决方案1】:

正如 Martin 在 cmets 中指出的那样,如果您发布了准确的错误消息(可能还有完整的异常详细信息)会很有趣。

但此类问题主要与操作系统级别的权限有关。

因此,请确保应用程序池的用户(身份)对 .mdf 文件具有完全访问 (ntfs) 权限,然后重试。

编辑(在您发布确切消息后):
好的,我想这意味着在您要部署到的服务器上,该 Sql Server 实例上已经有一个名为 DB 的数据库。因此,您必须删除或重命名该名称才能附加具有该名称的数据库。
不过我觉得用户权限问题还是有可能的。

【讨论】:

  • 我已经仔细检查了网络服务是否对 .mdb 文件进行了修改。我已经更新了我的帖子以显示错误。谢谢
  • @StevenL:您确定应用程序池标识是“网络服务”吗?另外,我不确定“修改”是否足够。您是否尝试过“完全访问”?
猜你喜欢
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 2016-09-05
相关资源
最近更新 更多