使用.MDF SQL Server数据库与ASP.NET相比使用SQL Server

9
我正在使用ASP.NET MVC编写网站,我的数据库(目前没有任何数据,只有正确的表)使用SQL Server 2008,在我的开发机器上已经安装了它。我通过使用服务器资源管理器连接到应用程序外部的数据库,然后使用LINQ to SQL映射。
一旦我完成网站的开发,我将把它移动到我的虚拟托管服务中。我担心在生产服务器上使用当前在我的开发机器上工作的SQL Server设置会很难做到,因为我将不得不通过托管控制面板导入所有数据库表。
我注意到可以从Visual Studio内部创建SQL Server数据库。然后存储在App_Data目录中。
我的问题如下:
  • 是否有意义将我的SQL Server DB从SQL Server移出,并将其作为.mdf文件放入App_Data目录中?
  • 如果是这样,如何移动它?我认为这被称为Detach命令,是吗?
  • 是否存在与此类.mdf文件相关的性能/安全问题
  • 我的预期设置是否可以与典型的虚拟托管计划正常工作?我希望.mdf数据库不会计入我的计划中可以创建的SQL Server数据库的数量限制。

我希望这个问题不会太宽泛。提前感谢!

注意:我刚开始接触ASP.NET MVC和所有这些东西,所以我可能完全误解了它应该如何工作。

4个回答

10

App_Data MDF 是一个 SQL Server 数据库,只有通过连接到 SQL Server 才能访问。虽然 Visual Studio 隐藏了背后发生的事情,但你仍然在使用 SQL Server 实例。这个 MDF 的 JIT(just-in-time)附加仅适用于 SQL Express 版本。在 SQL Express 2005 中,你会得到一个用户实例,请参阅Connecting to SQL Server Express User Instances (ADO.NET)。而在 SQL Express 2008 中,你可以控制是要使用用户实例还是服务实例进行附加。

你需要向你的托管提供商确认他们是否将此数据库视为计划中的“一个”数据库。请记住,从资源使用的角度来看,通过连接字符串附加数据库(这是当使用 App_Data MDF 部署选项时所发生的)与打开和运行数据库的其他任何方式一样昂贵。因此,如果他们允许这样做且不计入计划允许的数据库数量,我会非常惊讶。


5
所有的 SQL Server 数据库都是 .mdf 文件。这些 .mdf 文件存储在这里:*C:\Program Files\Microsoft SQL Server\MSSQL\Data*(默认位置)。
您说得对,如果要将数据库移动到 App_Data 文件夹中,您需要将 SQL 数据库从服务器中分离出来。您可以通过在 SSMS 中右键单击数据库来执行此操作。
将数据库移动到 App_Data 文件夹的优点是:
  1. 在生产中使用时,数据库将保留在那里,并且当您连接到它时,将动态地将数据库附加到 SQL Server。
  2. 您想将网站与 App_Data 文件夹中的 mdf 一起发布(这与第一个原因一起进行)。
  3. 将所有项目文件保存在一个位置。易于移动。易于备份。
在您通过自定义控制面板上传数据库的情况下,我不认为将数据库移动到 App_Data 文件夹中有任何优点。当您发布网站时,您只需分离 DB、获取 mdf 文件并上传即可(您的控制面板可能有其他导入 DB 的方法,例如 SQL 脚本...)。
直接回答您的问题...

将我的 SQL Server DB 移出 SQL Server 并作为 .mdf 文件放入 App_Data 目录中是否有意义?

我认为没有。

如果有意义,我该如何移动它?

分离。您可以通过在 SSMS 中右键单击数据库来执行此操作。

像这样的 .mdf 文件是否会出现性能/安全问题?

我不确定安全差异,但如上所述,当数据库保留附加到 SQL Server 时,可能会有更好的性能。

我的预期设置是否适用于典型的虚拟主机计划?

您需要检查他们是否计算/允许动态附加 sql 数据库。
希望这有所帮助。我不是专家。

2

不要使用App_Data作为您的数据库。它适用于一些快速的“如何”或原型,但不适用于生产服务器。在维护期间可能会给您带来很多麻烦。我曾经使用过它,再也不会了...

是的,性能问题。因为它总是需要附加数据库。当您有一个每天只有几个访问者的小网站时,这并不是一个大问题。

最好询问您的托管服务提供商是否计算它。


0
说实话,这可能不能直接回答你的问题,但我发现在托管(而不是本地)上设置的方式是将数据库移动/导入到托管公司,然后他们会给你一个连接字符串到你的主机/数据库。一旦你“上线”(或通过将你的网站上传到主机进行测试),请在web.config中更改连接字符串为主机提供的连接字符串。这可能过于简化,但对我总是有效的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接