SQL Express用户实例,带有多个ASP.NET站点
-
05-09-2019 - |
题
如何获得两个单独的ASP.NET站点,在这种情况下,使用实体框架和Web服务的网站使用相同的本地数据库MDF&LDF?
我环顾四周,我认为这种本地数据库被称为用户实例 - 至少他们是我目前正在使用它的方式。我不确定它是否有效,直到我从中找到以下信息 MSDN库 现在,我真的不确定它是否有效。
用户实例方案包括:...
使用Windows身份验证的专用ASP.NET托管。单个SQL Server Express实例可以托管在Intranet上。该应用程序使用ASPNET Windows帐户连接,而不是使用模仿。用户实例不应用于第三方或共享托管方案,在该方案中,所有应用程序都将共享相同的用户实例,并且不再彼此隔离。
这个无需任何额外配置即可立即起作用吗?当我尝试将DB添加到每个连续的应用程序中时,如果其他任何其他数据库都在使用DB,则会在使用错误中获得一个文件,这使我相信我不能这样做。但是,如果我阻止DB被使用,然后添加,然后启动它, 似乎 工作正常。有人对我有任何保证,它不会通过这种方式损坏或遇到任何错误?
最好是,MDF&LDF将存储在网站的App_Data目录(| Datadirectory |)中。如果我这样做,除非我将其放在网站的子目录中,否则我认为我无法可靠地使用该服务的相对地址,这是正确的吗?
编辑: 我使用SQL Server Express,因为这是学校的作业,因此我几乎必须使用它。如果没有用户实例的方法,我将尝试不用它。
解决方案
你不能使用 User Instance
为了这。这只允许一个客户一次连接到您的数据库。当您的两个应用程序使用相同的凭据时,您会得到描述的错误。当您的两个应用程序使用不同的凭据时,您实际上会获得两个单独的实例(也不是您想要的)。
此外,仅在SQL Server Express上支持用户实例。我不知道您的生产环境是什么样的,但是它可能不会在SQL Server Express上运行吗?
您应该使用 AttachDBFilename
在您的Web应用程序的连接字符串中,指向本地数据库: AttachDBFilename=|DataDirectory|\MyDB.mdf
.
在您的网络服务中,您也使用 AttachDBFilename
但这取决于Web服务的部署位置指向其指向它。