【问题标题】:SQL Express User Instance with multiple ASP.NET Sites具有多个 ASP.NET 站点的 SQL Express 用户实例
【发布时间】:2009-04-08 08:02:33
【问题描述】:

如何让两个单独的 ASP.NET 站点(在本例中为使用实体框架和 Web 服务的网站)使用相同的本地数据库 mdf 和 ldf?

我环顾四周,我认为这种本地数据库称为用户实例 - 至少他们是我目前使用它的方式。在我从MSDN Library 找到以下信息之前,我不确定它是否会起作用,现在我真的不确定它是否会起作用。

用户实例场景包括:

...

使用 Windows 身份验证的专用 ASP.NET 托管。单个 SQL Server Express 实例可以托管在 Intranet 上。应用程序使用 ASPNET Windows 帐户进行连接,而不是使用模拟。用户实例不应用于所有应用程序将共享同一个用户实例且不再相互隔离的第三方或共享托管方案。

在没有任何额外配置的情况下是否可以立即工作?当我尝试将数据库添加到每个连续的应用程序时,如果有其他任何东西正在使用数据库,我会收到一个文件正在使用错误,这让我相信我不能这样做。但是,如果我停止使用数据库,然后添加它,然后启动它,它 似乎 工作正常。有没有人向我保证以这种方式使用它不会损坏或出现任何错误?

最好将 mdf & ldf 存储在网站的 App_Data 目录 (|DataDirectory|) 中。如果我这样做,我认为我不能可靠地为服务使用相对寻址,除非我将它放在站点的子目录中,这是正确的吗?

编辑:我正在使用 SQL Server Express,因为这是学校的作业,所以我几乎必须使用它。如果有没有用户实例的方法,我会尝试不使用它。

【问题讨论】:

  • 这是第一个问题的伙伴。不确定您是否想弄乱“内部”mdf/ldf 文件。
  • 伊恩 - 谢谢你的夸奖。

标签: asp.net sql-server sql-server-2005 sql-server-express user-instance


【解决方案1】:

您不能为此使用User Instance。这一次只允许一个客户端连接到您的数据库。当您的两个应用程序使用相同的凭据时,您会收到您描述的错误。当您的两个应用程序使用不同的凭据时,您实际上会获得两个单独的实例(也不是您想要的)。

此外,用户实例仅在 SQL Server Express 上受支持。我不知道你的生产环境是什么样的,但它可能不在 SQL Server Express 上运行?

您应该在 Web 应用程序的连接字符串中使用 AttachDBFilename 来指向本地数据库:AttachDBFilename=|DataDirectory|\MyDB.mdf

在您的网络服务中,您也可以使用AttachDBFilename,但这取决于网络服务的部署位置指向的位置。

【讨论】:

  • 谢谢。我澄清了我使用 SQL Server Express 的原因。这是为了学校作业。
猜你喜欢
  • 2023-01-22
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2013-09-17
  • 2013-11-01
相关资源
最近更新 更多