代码之家  ›  专栏  ›  技术社区  ›  GibboK

最佳实践脚本安装数据库

  •  3
  • GibboK  · 技术社区  · 15 年前

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

    问题A) 在我的脚本中,我有几个批用于创建表。 表之间有许多外键,目前我必须按正确的顺序排列批,以避免与FK表冲突。 我想知道在没有fk的情况下创建表和所有列是否是一个好的实践,并在脚本的末尾修改这些表,添加fk。

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

    CREATE DATABASE NameX
    

    还有:

    USE NameX
    

    使用它。

    因为我需要为每个安装手动更新脚本。我在想,如果有一种集中的方式来命名脚本中的数据库,那就太好了。 通过这种方式,更改一个简单变量将创建具有我的名称和所有use语句的数据库。 我尝试使用局部变量,但没有成功,因为在go语句之后,它们超出了范围。 我在使用sqlcmd和变量方面没有任何经验。

    你知道怎么在我的剧本里解决这个问题吗? PS:我使用MS SQL 2008,我将在MS SMS中加载我的脚本。

    谢谢大家的帮助,这个社区很好。

    2 回复  |  直到 15 年前
        1
  •  2
  •   garik    15 年前
    • 避免使用“使用数据库”
    • 分离数据库创建脚本和数据对象创建脚本
    • 使用一些代码(安装、部署)执行创建数据库脚本,方法是用实名替换@database\u name

    替代方案:

    • 使用替换工具在部署前准备脚本(它只是用实名替换您的数据库\u name@)
    • 使用BAT文件准备脚本

    可供替代的

    • 在Visual Studio中使用数据库项目。vs可以生成一些变量,安装项目可以在部署过程中更改这些变量。
        2
  •  1
  •   Oded    15 年前

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

    至于你的第二个问题,我不知道如何集中处理。您最好的选择是全局搜索/替换SSMS中打开的文件上的数据库名称。