我想知道编写 SQL 脚本以设置用于生产和/或开发的数据库的最佳实践是什么,例如:
- 我应该包含 CREATE DATABASE 语句吗?
- 我应该在同一个脚本中为数据库创建用户吗?
- 在执行脚本主体之前禁用 FK 检查是否正确?
- 我可以在交易中包含 hole 脚本吗?
- 为每个数据库生成 1 个脚本比为所有数据库生成一个脚本更好吗?
谢谢!
最佳答案
你的问题很难回答,因为它取决于脚本在你试图实现的目标中的使用方式。你也不要说你正在使用哪个数据库服务器,因为提供的工具可以使一些任务更容易。
按照您的观点,这里有一些建议,这些建议可能与其他人的建议大不相同:)
- 我应该包括 CREATE DATABASE 声明?
您打算使用什么替代方案?如果您的问题是您是否应该将 CREATE DATABASE
语句放在与它所依赖的表创建相同的脚本中。开发数据库时,我使用单独的创建数据库脚本,因为我有一个脚本可以删除所有对象,因此我不需要再次创建数据库。
- 我应该在同一个脚本中为数据库创建用户吗?
我不会,因为用户很可能会改变,但您的架构没有。不妨在较小的脚本中管理这些更改。
- 在执行脚本主体之前禁用 FK 检查是否正确?
如果您正在导入数据以尝试恢复数据库,那么如果您正在使用自动递增 ID 并希望保持相同的值,那么您可能不得不这样做。此外,您最终可能会“乱序”导入表,并且不想执行检查。
- 我可以在交易中包含整个脚本吗?
是的,您可以,但这同样取决于您运行的脚本类型。如果您在重建数据库后导入数据,那么整个导入应该成功或失败。但是,您的交易文件在导入过程中会很大。
- 为每个数据库生成 1 个脚本比为所有数据库生成一个脚本更好吗?
同样,出于维护目的,最好将它们分开。
关于sql - 编写用于部署的 SQL 脚本的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4717889/