Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. SQL
Code

7条便于SQL开发者使用的SQL脚本

by
Difficulty:IntermediateLength:MediumLanguages:

Chinese (Simplified) (中文(简体)) translation by Cheng Hao (you can also view the original English article)

我们做的许多事情都依赖所掌握的知识。 倘若我们知道能够做成什么事,只有那时我们才能做出更明智更有效的决定。 这就是为何随身携带一些便捷的小贴士和小技巧是个不错的方法。 这种做事准则在任何地方都适用,当然也适用于MS-SQL开发者。

通过本文,我想跟大家分享一些在我作为SQL开发者的日常工作中已被证实非常有用的SQL脚本。 我会向大家展示下面每个脚本的使用场景。

注意:强烈建议,在享用这些脚本带来的好处之前,现在本地的测试环境下运行本文提供的所有脚本,然后才可在真实的数据库环境下运行,这样保证了安全性。

1. 在所有SQL存储过程中查找文本

可以想象当今世界没有Control-F的生活吗? 没有搜索引擎生活又会编程什么样! 很恐怖,是吧? 现在想象下数据库中有二三十条sql存储过程,而你需要找出包含特定词语的存储过程。

一个显而易见的做法是:依次开启每个存储过程,执行Control-F。 但这是重复的手动工作,枯燥无味。 那么,下面这个灵活的脚本能够帮到你。

2. 比较模式相同的两个不同数据库的数据表的记录数

如果你的数据库数据量巨大,并且数据来源是每天都得执行的一些ETL(extract, transform, load)过程,那么下面这个脚本就是为你量身定做的。

可能你每天都得花上差不多5个小时的时间执行脚本提取数据到数据库中。 当你对这个过程深入研究时,发现了一些地方可以对脚本进行优化,任务便可在4小时内完成。

你想要测试这项优化是否可行,但生产服务器上已经应用了现有的实现方案。合理的做法是用现在的数据库复制一份,在这个新的分离的数据库上进行实验。

现在一旦准备就绪,你将同时执行这两个ETL过程,比较提取数据的速度。 如果数据表很多,就得花相当多的时间进行比较。 因此,下面这个快捷的脚本就派上用场了,它促使这个过程更快执行。

3. 同时备份多个数据库

每个IT公司新雇佣的程序员(或sql开发者),在编写自己第一条SQL脚本之前首先要做的是确保当前生产环境数据库的运行版本不受损害,比如:数据库备份。

创建数据库备份,在备份版本的数据库上执行操作,给了你执行、实践任何类型数据修改的极大的自由度,因为它确保了即使你把公司客户的数据弄得一团糟,数据也可以恢复。 事实上,不仅是新的雇员,即使是同公司经验丰富的老员工也只是在创建数据备份的前提下才能执行任何数据修改操作。

尽管SQL Server中备份数据库不是件难事,但却是件耗时的工作
尤其是同时备份多个数据库的情况下。 下面这个脚本很便捷地实现了这一目的。

4. 同时压缩多个数据库的日志

每个SQL Server数据库都对应一个事务日志,这个日志中记录了所有的事务以及每个事务导致的数据库修改。 事务日志是数据库关键的组成部分,如果出现系统故障,可能需要用到事务日志使数据库恢复到一致性的状态。

然而当事务的数量开始不断增长时,存储空间(硬盘)的可用性成为了主要的关注点。 幸运的是,SQL Server允许通过减少事务日志文件的大小来重新声明额外空间。

虽然可以使用图形界面一个接一个地手动压缩日志文件,但谁又有这么多时间手动操作呢? 我们可以使用下面这个脚本快速地同时压缩多个数据库日志文件。

5. 通过设置单用户模式限制数据库连接数

单用户模式表明一个时间点只能有一个用户可访问数据库,一般用在维护行为。 总的来说,在设置数据库单用户模式时,有用户连接上了数据库,那么这些数据库连接会毫无征兆地关闭掉。

单用户模式在这些情况下非常有效:在需要及时将数据库恢复到某一时间点的版本,或避免其他访问数据库的进程对数据库可能做出的改动的情况。

6. 使用SQL中的字符串函数生成动态文本

许多编程语言允许在字符串文本中插入值,这有助于生成动态字符串文本。 由于SQL默认没有提供任何这样的函数,因此我们使用这个快捷的补救办法。 使用下面的函数,任意个数的文本可以动态地插入到字符窜文本中。

7. 打印数据表字段定义

当比较多个模式相似的数据库时,就必须查看数据表字段的详细定义。 字段的定义(数据类型,是否为空?) 与字段自身名称同样重要。

对于有许多数据表而且数据表又有许多字段的数据库来说,将每个字段与另一个数据库的对应表的字段手动进行比较耗时严重。 下面这个脚本恰好用来自动执行这个过程,它打印出了指定数据库的所有数据表的定义。

总结

本文中,我们看到了7条可以帮助SQL开发者削减大量手动、费力的工作并且提高整体效率的脚本。 同时也审视了实施这些脚本的不同的使用场景。

如果你正在找寻更多要学习(或要使用)的SQL脚本,别犹豫了,到CodeCanyon看看有什么可以学到的。

一旦你开始掌握这些脚本的要领,你将肯定会开始找出其他许多可以有效使用这些脚本的场景。

祝你好运!

Envato qr branded
关注我们的公众号
Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.