高效数据库管理工具:SQL Search

在管理多个数据库和服务器时,需要一种高效的方式来搜索特定数据库中的对象,或者特定SQL Server实例中的对象,甚至是对象元数据中的特定字符串。即使是最专注的团队,也不太可能记住每个数据库对象的每个模式和每行代码!

SSMS对象资源管理器中的搜索功能非常有限(按F7打开搜索栏),但需要的是更多的功能。可以尝试“暴力”方法,将数据库模式脚本化到具有良好字符串搜索功能的文本编辑器中,但通常还想搜索其他对象,如SQL Server代理作业、SSIS包等。通过一些耐心和一些手工编写的脚本和存储过程,Phil Factor已经证明,可以从信息架构和系统目录视图中提取出相当多的信息——参见《使用SSMS和TSQL探索SQL Server表元数据》和《探索数据库模式》。

然而,就易用性而言,当需要进行详细搜索时,会选择Red Gate的SQL Search工具,这是一个免费的SSMS插件。它允许在多种对象类型和数据库中搜索对象元数据,为节省了很多时间和烦恼。

典型任务开始:寻找代理作业

在最近的一个典型的工作日,被指派在一个服务器上实施维护作业。知道已经存在一个类似的作业,还记得它的部分名称,甚至是作业步骤的名称,但服务器托管了令人难以置信的数量的作业,无论如何也找不到想要的那个。

挫败感开始出现,几乎要放弃并从头开始重写作业,这时突然想起在某个地方读到过,SQL Search的最新版本已经扩展了其搜索功能,包括作业。

下载并安装到当前版本的升级只花了几分钟,然后打开了SSMS并启动了SQL Search(在这个用例中是在本地SQL Server实例上演示,而不是生产实例!)。

接下来,必须定义搜索。知道作业名称中的一个短语,但不知道整个名称,所以输入了知道的内容,没有选择“精确匹配”搜索选项。

接下来,点击了“所有对象类型”下拉菜单,以显示在可搜索数据库对象列表下的服务器对象称为作业。尽管只想要作业,但很好奇它会找到什么,所以继续检查了它们全部。

过了一会儿,SQL Search返回了结果:在“对象名称”列中,看到了作业名称,而“详细信息”列甚至提供了实际的作业步骤细节!

从那时起,就多次使用这个作业搜索。对关键字的快速搜索将揭示与作业步骤相关的SSIS包执行,比逐个查看代理要快得多。

还有什么可能?

通常使用SQL Search来跟踪特定模式对象的所有实例,或者表中的列,或者找到与特定业务单元相关的所有模式对象。例如,将与供应商合作进行升级的过程流,并将需要审查与该特定业务单元相关的所有模式对象。由于每个业务单元对其业务对象使用严格的命名约定,对“律师”的快速搜索,比如说,将返回所有与这个单元相关的表、视图、存储过程。

其他时候,开发人员会就特定存储过程的调整或维护问题向求助,但不一定知道它位于1500个数据库中的哪一个。幸运的是,DBA会知道要查看的服务器,并且凭借SQL Search,可以迅速定位任何提供名称的存储过程。

另一个好的用例是在数据库代码库中寻找“麻烦”字符串的出现。许多年前,没有源代码控制验证来检查诸如/**To do…**/注释或使用SELECT *等问题。在管理的代码库大小中,它们仍然不时出现。然而,它们越来越少,因为对“*To”的快速SQL Search可以迅速找到它们。SQL Search的最新版本还引入了使用%通配符以及布尔运算符进行搜索的能力,使这些强大的搜索变得更加强大。

愿望清单

在组织中,有一个中央管理服务器(CMS),它按环境(生产、非生产)分隔数据库,所以可以打开生产目录,例如,所有该类别的服务器在SSMS对象资源管理器中打开,可以使用SQL Search在每个服务器上搜索项目。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485