为 MS SQL Server 设计、生成和版本化数据库模式脚本的最佳方法是什么?
What is the best way to design, generate, and version a database schema script for MS SQL Server?
我从来没有真正见过像这样笼统的问题(有答案),所以我希望得到一些有用的反馈。我问的原因是因为我以前做过所有这些并且我有自己的方法,但有时我觉得这不是最佳做法。
让我们举个例子,我买不起更好的数据库建模工具,而且我只有 sql 服务器和 ms sql 服务器管理工作室。我做的是:
- 我使用 mssms 进行设计,我的数据库中的所有实体(tables、主键、外键、索引等)
- 然后我只在 mssms 中使用 'Generate Scripts...' 命令生成模式脚本。生成的脚本相当大(使用 sql server express 2012)并且似乎没有很好地组织维护。
示例:在设置完所有table 创建脚本后,有一堆ALTER TABLE
命令来添加所有约束。这种东西在table creation script section里好像会好一些,也许不会。此外,为了升级能力,我通常为每个 table 创建部分添加“IF NOT EXISTS
”,这样当我需要重新 运行 sql 当数据库更新为新的 tables、列等时的脚本
- 然后对于版本控制,我通常有一个单独的脚本,我 运行 在数据库本身的 VERSION table 中添加架构版本(只有一行)。
这允许我在 运行 脚本时通过添加 'if new-version > current-version' 之类的东西来进行增量升级。
它似乎在过去对我有用,但它似乎有点,我不知道,不是很复杂。 sql 专家可以阐明这个问题吗?这是我们一遍又一遍地为我们创建的每个数据驱动的网络应用程序所做的事情。我想看看其他开发人员是如何做到的。
回顾,
- 你是如何设计你的数据库模型和生成脚本的(你是用设计工具来做的,还是从头开始写等等?),
- 如何管理随着时间的推移增量数据库更改?
- 您如何对数据库进行版本控制?
SQL 服务器数据工具非常适合这个。它具有您需要的所有设计功能和可配置的脚本。它还将比较两个数据库并为您生成更改脚本。哦 - 而且它是免费的!
我从来没有真正见过像这样笼统的问题(有答案),所以我希望得到一些有用的反馈。我问的原因是因为我以前做过所有这些并且我有自己的方法,但有时我觉得这不是最佳做法。
让我们举个例子,我买不起更好的数据库建模工具,而且我只有 sql 服务器和 ms sql 服务器管理工作室。我做的是:
- 我使用 mssms 进行设计,我的数据库中的所有实体(tables、主键、外键、索引等)
- 然后我只在 mssms 中使用 'Generate Scripts...' 命令生成模式脚本。生成的脚本相当大(使用 sql server express 2012)并且似乎没有很好地组织维护。
示例:在设置完所有table 创建脚本后,有一堆ALTER TABLE
命令来添加所有约束。这种东西在table creation script section里好像会好一些,也许不会。此外,为了升级能力,我通常为每个 table 创建部分添加“IF NOT EXISTS
”,这样当我需要重新 运行 sql 当数据库更新为新的 tables、列等时的脚本 - 然后对于版本控制,我通常有一个单独的脚本,我 运行 在数据库本身的 VERSION table 中添加架构版本(只有一行)。
这允许我在 运行 脚本时通过添加 'if new-version > current-version' 之类的东西来进行增量升级。
它似乎在过去对我有用,但它似乎有点,我不知道,不是很复杂。 sql 专家可以阐明这个问题吗?这是我们一遍又一遍地为我们创建的每个数据驱动的网络应用程序所做的事情。我想看看其他开发人员是如何做到的。
回顾,
- 你是如何设计你的数据库模型和生成脚本的(你是用设计工具来做的,还是从头开始写等等?),
- 如何管理随着时间的推移增量数据库更改?
- 您如何对数据库进行版本控制?
SQL 服务器数据工具非常适合这个。它具有您需要的所有设计功能和可配置的脚本。它还将比较两个数据库并为您生成更改脚本。哦 - 而且它是免费的!