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

3
我希望你能就SQL脚本安装数据库的最佳实践提供意见。
问题A: 在我的脚本中,我有多个批次用于创建表格。 这些表格之间存在许多外键,目前必须按正确顺序排列批次以避免与外键表格冲突。 我想知道是否有一个好习惯,先创建没有外键的表格和所有列,然后在脚本末尾通过ALTER添加FK。
问题B: 我的脚本应用于在不同服务器上创建不同的DB。 每次安装时,数据库名称可能不同。 现在,在我的脚本中,我使用以下方式创建一个数据库:
CREATE DATABASE NameX

并且:

USE NameX

为了使用它。

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

有什么办法可以在我的脚本中解决这个问题吗? PS:我使用MS SQL 2008,我将在MS SMS中加载我的脚本

谢谢大家的帮助,这个社区真棒:-)

2个回答

2
  • 避免使用"USE DATABASE"
  • 将数据库创建脚本和数据对象创建脚本分开
  • 使用一些代码(如Setup、Deploy)来执行创建数据库脚本,通过替换@database_name为实际名称

替代方案:

  • 使用一些替换工具在部署之前准备脚本(它只是用真实名称替换您的@@@database_name@@@)
  • 使用批处理文件来准备脚本

替代方案:

  • 在Visual Studio中使用Database Project。VS可以生成一些变量,在部署过程中安装项目可以更改这些变量。

1
通常情况下,我们首先编写所有表的脚本,然后是外键脚本、索引脚本和其他脚本。这是正常的做法,因为您不能在不存在表的情况下添加关系...
至于您的第二个问题-我不知道有什么集中处理的方法。您最好的选择是在SSMS中打开文件时对数据库名称进行全局搜索/替换。

嗨,Oded,我对这两个问题的想法也是一样的。谢谢你的评论。 - GibboK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接