使用SQL Server Express 2005创建新数据库时,默认情况下,数据库文件(.mdf和.ldf)将存储在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
中。
但是,通过我在ASP.NET MVC中看到的教程(例如,Nerd Dinner),将数据库文件保存在ASP.NET项目的App_Data文件夹中似乎是常见的做法。
问题
更新
有一点我还没有得到。如果服务器上有生产数据库,为什么你甚至希望用App_Data中的内容替换这个数据库。在发布新版本的应用程序时,您通常不希望拥有在生产数据库上运行的更新脚本吗?即使是初始部署,我宁愿编写脚本数据库创建脚本而不是物理复制文件。此外,对于SQL Server(Express)数据库,复制还不够。您必须分离数据库以操作文件,然后在完成后重新附加。
所以,我不得不说,App_Data的观点仍然让我感到厌烦。有人可以开导我吗?
答案 0 :(得分:5)
您可以删除App_Data而不会产生任何负面影响,但如果它存在(通过文件夹名称)在ASP.NET网站内,那么它具有禁止直接链接以下载其内容的特殊网站功能 - 这是一个保护的安全功能您的数据库直接通过网络下载(例如通过网络浏览器),即使它存在于网站中。但是,您的应用程序仍然可以访问App_Data文件夹中的文件,就像访问其他网站内容一样。
Microsoft将其声明为:
注意:申请内容 文件夹,App_Themes除外 文件夹,不响应 Web请求,但可以访问它 来自应用程序代码。
Microsoft描述了他们特殊的ASP.NET文件夹结构including App_Data here。
答案 1 :(得分:2)
将数据库文件放在App_Data
文件夹中有很多好处:
答案 2 :(得分:1)
绝对没有需要来使用App_Data文件夹。这是将数据库文件与您的站点保持在一起的便利位置。使用与否的决定更多地取决于偏好/政策而非其他任何事情。
答案 3 :(得分:0)
是的,当您只是使用将在您的webroot中存在的快速数据库时,最好使用app_data文件夹。主要原因是asp .net isapi隐含地知道不满足来自此目录的任何文件请求。 app_code文件夹也是如此。没有规定你必须谨慎行事才能做到这一点。
您还可以在此处存储敏感的xml,访问dbs和任何其他数据文件,以增强安全性。
在将web.config指向SQL服务器实例而不是db文件之前,我只使用它进行本地开发。