文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在单个操作中重新格式化整个数据库只需简单3步!

2024-04-02 19:55

关注

SQL Compare是一款比较和同步SQL Server数据库结构的工具。现有超过150,000的数据库管理员、开发人员和测试人员在使用它。当测试本地数据库,暂存或激活远程服务器的数据库时,SQL Compare将分配数据库的过程自动化。

从另一个团队继承数据库?在格式化SQL的方式上更改了团队策略?当您开发它时,什么阻止您很好地格式化整个数据库的代码?手动的过程可能需要比预期更长的时间。本篇文章演示了使用SQL Compare和SQL Prompt在单个操作中重新格式化整个数据库的简单3步方法。

首先,为开发数据库生成最新的构建脚本,包括表、代码模块等等。您可以使用SQL Prompt根据团队的标准重新格式化整个构建脚本。到目前为止一切都很简单,但接下来呢?

下一个任务是将这些格式更改保存到开发数据库中。您需要设计一个迁移脚本,该脚本在执行时会将每个代码模块、作为视图的对象、表值函数、标量函数、触发器和过程,以应用新的代码格式。这样,这些例程的新来源将保留在数据库中。但是,由于复杂的对象间引用,这可能不像通过构建脚本并将CREATE语句更改为ALTER那么简单。当您尝试运行这些ALTER命令时,您可能会遇到麻烦。

例如,除了在视图、另一个函数或过程中引用之外,函数也可以绑定到表列上的计算列、默认约束或检查约束。如果您尝试以这种方式更改正在使用的函数,您将收到错误:

Cannot ALTER '<name of referenced object>' because it is being referenced by object '<Name of referencing object>'.

为避免这种情况,您必须在更改函数之前删除引用和约束,然后替换它们。如果一个函数被引用很多,这使得改变函数相当棘手。此外,如果WITH SCHEMABINDING正在使用,将强制执行依赖项。这意味着在更改之前必须更改所有下游例程以删除模式绑定。总而言之,它可能会变得复杂。

成功执行了迁移脚本之后,您还需要在源代码管理中更新表和代码模块中的各个对象脚本,以反映数据库的新格式化版本。当然,源代码管理中的规范源代码是唯一可以保存CREATE TABLE语句格式以及所有注释的地方。

幸运的是,一旦您生成了构建脚本,并使用SQL Prompt对其进行了格式化,SQL Compare可以为您完成剩下的这项艰苦工作。

步骤1:在SSMS中生成并格式化构建脚本

第一项任务是生成最新的数据库构建脚本。最简单的方法是在沙箱中使用SSMS Generate Scripts向导,在开发数据库的最新副本上。在SSMS对象资源管理器窗格中,右键单击要进行美化的源代码的开发数据库。然后导航任务 | 生成脚本...以启动向导。

在单个操作中重新格式化整个数据库只需简单3步!

我们将为新数据库生成所有内容,并将其放在新的查询窗口中。

在单个操作中重新格式化整个数据库只需简单3步!

向导的其余部分是不言而喻的。您将在新的查询窗口中找到构建脚本。

我们不想重建我们的开发数据库,因此,在构建脚本中,我们需要将对数据库的所有引用更改为新数据库的名称。这些引用将被SSMS括起来,因此您应该在全局搜索中包含这些括号,并在数据库名称上替换表达式,无论它们在何处引用。因此,如果您的数据库名为Snibbo,并且您希望构建脚本创建NewSnibbo,则找到[Snibbo]并替换为[NewSnibbo]。通过这样做,即使“find”字符串在注释、字符串或其他符号的其他地方使用,操作也会更加安全。因为除非您使用数据库名称作为数据库对象的名称,否则它们将不带括号。即使您不明智地调用数据库[Select],如果将其更改为[SelectCopy] ,也不会损害您的查询。

脚本开头的CREATE DATABASE语句需要更改为最简单的...

CREATE DATABASE <nameOfNewDatabase>

然后,您应该可以通过单击菜单项SQL Prompt > Format SQL轻松地重新格式化此脚本。(或按Ctrl K Ctrl Y)。由于您可能已选择删除不必要的方括号,因此最好先更改数据库名称。

步骤2:使用SQL Compare自动生成部署脚本

下一个任务是使SQL Compare创建一个部署脚本,该脚本可以改变开发数据库中的每个代码模块以反映新的格式。

此时您有两种选择:

我将演示第二种技术,因此我们需要使用构建脚本临时创建一个新版本的数据库,该版本将在其模块中包含所有重新格式化的代码。

在这个例子中,使用Sandbox开发服务器,我已经使用了一个名为PhilsScripts的数据库,其中包含大量的诊断脚本。已经生成了一个构建脚本,对其进行了格式化,并使用该构建脚本在名为BetterPhilsScripts的服务器上创建了一个新数据库。然后执行SQL Compare并指定新格式化的BetterPhilsScripts作为源,并将PhilsScripts指定为目标。

在单个操作中重新格式化整个数据库只需简单3步!

我们比较两者并发现SQL Compare已检测到SQL Prompt所做的所有更改。然后,我们检查部署脚本,当我们满意时,我们会部署更改。

在单个操作中重新格式化整个数据库只需简单3步!

步骤3:更新源代码管理

使用SQL Compare,您可以将数据库保存在脚本目录中,或更新源控制系统的现有脚本目录。这会将每个对象保存在自己的文件中,但也可以维护构建脚本。我使用PowerShell脚本来执行此操作;当我在开发数据库中一次更改多个对象时,它会定期保存对象脚本,然后我可以使用Github Desktop或Gmaster通过本地存储库进行检查。

整理

因此,通过SQL Prompt和SQL Compare的组合,不仅可以重新格式化整个数据库或模式的例程,还可以更新单个源文件或构建脚本以进行源代码控制。如果您使用“迁移”方法进行数据库开发,则还可以将SQL Compare同步脚本保存为源代码控制,作为迁移脚本的基础。这一切都使得重新格式化SQL代码变得更加愉快,而不仅仅是一件苦差事。


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯