Sql 最佳实践脚本安装数据库

Sql 最佳实践脚本安装数据库,sql,database,scripting,Sql,Database,Scripting,我想听听您对SQL脚本中安装数据库所采用的最佳实践的看法 问题A) 在我的脚本中,我有几个批来创建表。 表之间有许多外键,目前我必须以正确的顺序安排批处理,以避免与FK表冲突。 我想知道是否可以先创建没有FK的表和所有列,然后在脚本末尾添加FK来更改这些表 问题B) 我的脚本应该用于在不同的服务器上创建不同的数据库。 数据库在每个安装上可能有不同的名称。 现在,在我的脚本中,我使用以下方法创建了一个数据库: CREATE DATABASE NameX 以及: 使用它 因为每次安装都需要手动更新

我想听听您对SQL脚本中安装数据库所采用的最佳实践的看法

问题A) 在我的脚本中,我有几个批来创建表。 表之间有许多外键,目前我必须以正确的顺序安排批处理,以避免与FK表冲突。 我想知道是否可以先创建没有FK的表和所有列,然后在脚本末尾添加FK来更改这些表

问题B) 我的脚本应该用于在不同的服务器上创建不同的数据库。 数据库在每个安装上可能有不同的名称。 现在,在我的脚本中,我使用以下方法创建了一个数据库:

CREATE DATABASE NameX
以及:

使用它

因为每次安装都需要手动更新脚本。我在想,在脚本中有一个集中的数据库命名方法会很好。 通过这种方式,更改一个简单变量将创建包含我的名字和所有USE语句的数据库。 我尝试使用局部变量,但没有成功,因为GO语句之后它们超出了范围。 我没有任何使用sqlcmd和变量的经验

你知道如何在我的脚本中解决它吗? PS:我使用MS SQL 2008,我将在MS SMS中加载我的脚本


感谢大家的帮助,这个社区非常棒:-)

通常情况下,首先要编写所有表的脚本,然后是FK脚本、索引脚本和其他脚本。这是正常的做法,因为您不能将关系添加到不存在的表中

至于你的第二个问题——我知道没有办法集中处理这个问题。最好的选择是全局搜索/替换SSMS中打开文件上的数据库名称。

  • 避免使用“使用数据库”
  • 分离数据库创建脚本和数据对象创建脚本
  • 使用一些代码(设置、部署)通过将@database_name替换为实名来执行创建数据库脚本
备选方案:

  • 在部署之前,使用一些替换工具准备脚本(它只需将您的@@database_name@@替换为真实名称)
  • 使用bat文件准备脚本
另类

  • 在VisualStudio中使用数据库项目。VS可以生成一些变量,安装项目可以在部署过程中更改这些变量

嗨,奥德,我对这两个问题的想法都是一样的。谢谢你的评论
USE NameX