我只是在浏览有关堆栈溢出的问题,而且我已经找到了一个帖子,它建议通过简单地复制app_data文件夹中的mdf文件并修改连接字符串来部署数据库。
我知道有些人在开发过程中会在app_code中创建一个mdf文件,但是为了上线,这真的是一种可行的方式,也是部署数据库的好方法吗?
我在开发期间通常做的是编写自己的SQL脚本文件来构建数据库,并在我的本地SQL服务器上运行它。当站点即将上线时,我在目标服务器上运行脚本并将我的站点设置为与数据库通信。说实话,我从来没有利用app_code文件夹来存储数据库,我通常用它来存储我的数据访问层逻辑。
我在这做错了吗?使用app_data文件夹存储数据库真的是一个好习惯吗?我用这种方法可以看到的一个问题是,部署会很慢。在互联网上传输mdf文件肯定比运行我的sql脚本文件慢得多。期待听到您对此事的想法和经验。欢呼声。
答案 0 :(得分:2)
我个人更喜欢你部署数据库的方法,我看到了一个很大的优点:通常Web和DBServer不应该是一台机器(安全性,可维护性......)并利用app_code文件夹来保存你的数据库似乎有点可耻。
答案 1 :(得分:1)
另一个缺点是MDF文件部署仅在第一次工作。一旦你活着并且需要保存数据,这将是不充分的。
答案 2 :(得分:1)
app_data部署方案对于您没有独特数据库服务器的网站非常有用(许多免费/便宜的主机可以让您这样做)。
这在理论上类似于使用访问作为小型经典ASP网站的数据库的旧方法。
答案 3 :(得分:0)
根据我的经验,最佳实践涉及使用某种构建过程(可能是自动化或您提到的脚本)。然后将数据库划分为以下内容: 1)一次性事件 - 通常你会创建一次数据库;您可以插入一次数据或初始部署;架构更改 - 这些更改在构建过程之外处理。 2)存储过程,用户功能和其他可重复事件 - 由构建过程处理。
然后,构建过程在部署代码时部署数据库构造。
编写存储过程等,如果它们存在,则首先删除它们然后再次创建。
然后将这些脚本存储在您的代码存储库中 - 而不是mdf。现在您可以进行版本控制,历史记录,控制构建过程等。至于文件夹 - 我将为核心数据库构造创建一个单独的项目文件夹 - 这些与“代码”不同,应该这样对待。但它们可能应该成为您解决方案的一部分。
答案 4 :(得分:0)
实际上,在我看来,数据库部署对于站点工具,大规模部署等非常有用。部署包含数据库的预制应用程序可能是一个简单的过程。如果这个版本的后续版本得到更新,它所需要做的就是知道它是否是升级版本。如果是,则运行更新本地数据库的脚本,否则复制到新数据库中。可以简化某些有限的场景。