在ASP.NET中使用.MDF SQL Server数据库与使用SQL Server

时间:2010-04-13 17:21:30

标签: asp.net sql sql-server asp.net-mvc hosting

我目前正在ASP.NET MVC中编写一个网站,我的数据库(其中没有任何数据,只有正确的表格)使用SQL Server 2008,我已经在我的开发中安装了机。我使用Server Explorer连接到我的应用程序中的数据库,然后是LINQ to SQL映射。

完成网站开发后,我会将其移至我的托管服务,这是一个虚拟主机方案。我担心在生产服务器上使用当前在我的开发机器上运行的SQL Server设置是否很难,因为我必须通过主机控制面板导入所有数据库表。

我注意到可以从Visual Studio内部创建SQL Server数据库。然后将其存储在App_Data目录中。

我的问题如下:

  • 将我的SQL Server数据库从SQL Server移出并作为.mdf文件移入App_Data目录是否有意义?
  • 如果是这样,如何可以移动它?我相信这叫做Detach命令,不是吗?
  • 这样的.mdf文件可能会出现性能/安全问题吗?
  • 我的预期设置是否可以正常使用典型的虚拟主机方案?我希望.mdf数据库不会计入可以使用我的计划创建的有限数量的SQL Server数据库。

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

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

4 个答案:

答案 0 :(得分:9)

App_Data MDF是一个SQL Server数据库,它将及时附加到SQL Server实例。访问MDF的唯一方法是连接到SQL Server。 Visual Studio隐藏了幕后发生的事情,但您仍在使用SQL Server实例。 MDF的这种即时附件仅适用于SQL Express版本。在SQL Express 2005中,您最终会得到一个用户实例,请参阅Connecting to SQL Server Express User Instances (ADO.NET)。使用SQL Express 2008,您可以控制用户实例或附加到服务实例。

您必须与托管服务提供商核实,确认他们是否将此数据库计为计划中的 one 数据库。您必须记住,从资源使用的角度来看,通过连接字符串附加数据库(这是使用App_Data MDF部署选项时会发生的情况)与开放和运行数据库的任何其他方式一样昂贵,因此我听到他们允许这样做并且不计入计划中允许的数据库数量,我会感到非常惊讶。

答案 1 :(得分:5)

所有SQL Server数据库都是.mdf个文件。 .mdf文件存储在此处: * C:\ Program Files \ Microsoft SQL Server \ MSSQL \ Data * (默认位置)。

您是正确的,您必须从服务器分离SQL数据库以将数据库移动到App_Data文件夹。您可以通过右键单击SSMS中的数据库来执行此操作。

将数据库移动到App_Data文件夹的优点是:

  1. 在生产中使用时,数据库将保留在那里,当您连接到数据库时,您将动态地将数据库附加到SQL Server。
  2. 您希望将网站与App_Data文件夹中的mdf一起发布到您的服务器(这与第一个原因相符)。
  3. 将所有项目文件保存在一个位置。易于移动。易于备份。
  4. 在您通过自定义控制面板上传数据库的场景中,我认为将数据库移动到App_Data文件夹没有任何好处。发布站点时,您只需分离数据库,获取mdf文件并上传(您的控制面板可能有其他方式导入数据库,例如SQL脚本......)。

    直接回答你的问题......

      

    移动我的SQL是否有意义   服务器数据库退出SQL Server并进入   App_Data目录为.mdf   文件?

    我不这么认为。

      

    如果是这样,我该如何移动它?

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

      

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

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

      

    我的预期设置是否可以正常运行   典型的虚拟主机方案?

    您必须检查它们是否计算/允许动态附加SQL数据库。

    我希望这会有所帮助。我不是专家。

答案 2 :(得分:2)

不要将App_Data用于您的数据库。这对于一些快速的“如何”或原型是好的,但它对生产服务器来说并不好。它可能会在维护期间给您带来很多麻烦。我曾经用过一次,再也没用过......

是的,表现。因为它总是必须附加数据库。如果你有一个每天有几个访客的小网站,这不是一个大问题。

如果您的托管服务是否可以,最好询问您的托管服务。

答案 3 :(得分:0)

老实说,这可能无法直接回答您的问题,但我发现您在托管(而非本地)上设置它的方式是将您的数据库移动/导入您的托管公司,然后托管公司会给您一个连接字符串给您主机/分贝。一旦“上线”(或通过将站点上传到主机进行测试) - 在web.config中将连接字符串更改为主机提供的连接字符串。这可能过于简单,但一直对我有用。