具有多个ASP.NET站点的SQL Express用户实例

时间:2009-04-08 08:02:33

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

如何获得两个单独的ASP.NET站点,在本例中是使用Entity Framework和Web Service的Web站点,以使用相同的本地数据库mdf& LDF?

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

  用户实例场景包括:      

...

     

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

在您的Web服务中,您还使用AttachDBFilename,但这取决于Web服务的部署位置。