【问题标题】:Best Practice for maintaining a TSQL database creation script for a web application为 Web 应用程序维护 SQL 数据库创建脚本的最佳实践
【发布时间】:2011-10-28 04:43:00
【问题描述】:

我们有一个 ASP.NET Web 应用程序,需要维护数据库创建和初始化脚本。

人们知道维护数据库创建和初始化脚本的行业最佳实践吗?我可以想到两种主要方法。

  1. 直接手动维护一个 tsql 创建脚本。
  2. 维护一个主数据库并创建脚本,然后将其签入源安全。

此外,脚本应该能够通过源代码控制进行跟踪,即表格顺序应该是可控的。

如果可能,还应包括在相同或单独的脚本中跟踪初始化数据的能力。

目前我们从管理工作室生成脚本,但表格的顺序似乎是随机的。

解决方案自动化程度越高越好。

【问题讨论】:

  • 我相信我们使用 Visual Studio 提供的任何东西,我明天会研究细节(我需要,因为它不处理索引视图......)
  • 为什么不使用数据库项目? VS 有一个模板,我认为你可以做所有这些事情。
  • 我们只有最便宜的VS

标签: asp.net sql-server tsql web-applications


【解决方案1】:

问题在于没有维护脚本,也没有维护数据库的“主”副本。真正的问题是升级 现有的数据库。您在开发环境中进行修改,然后将其传播到测试环境,最后推送到生产环境。虽然在开发人员和测试环境阶段可以从头开始,但在生产环境中,您始终必须升级现有部署。

根据我的经验,最佳做法是使用upgrade scripts。即使对于单个部署的站点,这种做法也很有用,但对于可能处于不同版本的多个位置,它变得非常宝贵。但是,即使只有一个操作站点,对于能够反复测试升级(从当前版本的备份开始)、保持源代码控制中的更改、拥有一个正式且经过同行评审的更改程序(升级脚本)仍然很有用。升级脚本可以根据运营站点的特定需求进行定制,例如特别小心地处理大表,或处理加密数据,或任何基于差异的工具忽略或忽略的无数细节。主要缺点是必须编写脚本,这需要真正的 T-SQL 知识(忘记你最喜欢的管理工具中的所有“设计师”)。

【讨论】:

  • 升级脚本的另一个缺点是 - 除非与整个数据库创建脚本相结合 - 您不能轻松地重新创建或重新部署数据库。如果您想创建一个用于测试或开发的新环境,您需要从现有环境中备份和恢复。它有效,但并不理想。
  • 从 v.0 到 v.1 的升级脚本是部署初始数据库(即“创建”)的脚本。
【解决方案2】:

您可能想查看RedGate SQL Source Control

【讨论】:

  • 看起来不错,但有一个问题是说服老板这样做
【解决方案3】:

你在找Visual Studio Database Projects吗?

我使用数据库项目来存储所有数据库对象(表、视图、函数、键、触发器、跨模式的索引)并在 TFS 中保持版本控制。您可以构建数据库以确保一切都有效。您可以部署到新数据库,或与现有数据库进行架构比较。

我还将所有参考和设置数据保存在部署后脚本中,这些脚本会在部署后自动运行。

【讨论】:

  • 可能有用,但我们只有不包含它们的 vs 标准
猜你喜欢
  • 2010-11-18
  • 2011-08-04
  • 2011-09-14
  • 1970-01-01
  • 2010-10-12
  • 2011-02-16
  • 1970-01-01
  • 2018-08-26
  • 2011-02-18
相关资源
最近更新 更多