SQL Server 官方客户端管理工具 SQL Server Management Studio(SSMS),做了非常多且实用的功能,极大方便了使用者对 SQL Server 数据库系统的相关操作和运维。
那么有哪些有用的功能呢?您阅读完这篇文章后,一定会发现某些功能对你是非常有用的。尤其是专业的 DBA 或相关数据库维护人员。下面,我就细数 SSMS 常用且有用的一些功能。
【行号】
在查询窗口显示行号,可以了解代码的工作量,也可以在出错时更方便定位。
工具 -> 选项 -> 文本编辑器 -> Transact-SQL -> 常规 -> 行号(勾选)
如下图,勾选“行号”之后,查询窗口的左边每行都多了数字编号。
【Sqlmd】
sqlcmd 是一个命令行工具,可以连接到 SQL Server 实例中,在 Windows 与 Linux 环境都可以独立安装。而 SSMS 同样也提供 SQLCMD 这样一个功能,可以在一个查询窗口中,连接到不同的服务器执行相应的 SQL 脚本。该功能在临时对多服务器进行自动化操作或批量处理时非常有用。
(打开一个查询窗口)-> 查询 -> SQLCMD 模式
如下,通过设置变量,我们在当前一个查询窗口中,就能一键配置好可用性数据库,是不是非常方便!
:setvar DBName xxxxxx
:setvar PrimarySrv SQL01\SQL2012
:setvar SecondarySrv SQL02\SQL2012
:setvar BackuPath \\SQL01\software\bak\
:CONNECT $(PrimarySrv)
BACKUP DATABASE $(DBName) TO DISK ='$(BackuPath)$(DBName).bak' WITH COMPRESSION,INIT
BACKUP Log $(DBName) TO DISK ='$(BackuPath)$(DBName).bak' WITH COMPRESSION
GO
:CONNECT $(SecondarySrv)
RESTORE DATABASE $(DBName) FROM DISK = '$(BackuPath)$(DBName).bak' WITH FILE=1, NORECOVERY,REPLACE
RESTORE LOG $(DBName) FROM DISK = '$(BackuPath)$(DBName).bak' WITH FILE=2, NORECOVERY
GO
:CONNECT $(PrimarySrv)
DECLARE @SQL VARCHAR(500)
SELECT @SQL = 'ALTER AVAILABILITY GROUP ['+name+'] ADD DATABASE [$(DBName)];' FROM sys.availability_groups
EXEC(@SQL)
GO
:CONNECT $(SecondarySrv)
DECLARE @SQL VARCHAR(500)
SELECT @SQL = 'ALTER DATABASE [$(DBName)] SET HADR Availability GROUP = ['+name+']; ' FROM sys.availability_groups
EXEC(@SQL)
GO
【GO 多次执行】
"GO" 不是 Transact-SQL 语句,但可以被sqlcmd 和 osql 及 SSMS 代码编辑器识别。"GO" 是批处理的执行命令,它可以重复执行多次脚本。如下,我们对同一个 SQL 语句执行了 10 次。它有什么好处呢?我们可以批量快速生成测试数据,这简单的语法可是非常有用的。
CREATE TABLE TAB(id int)
GO
SET NOCOUNT ON
GO
INSERT INTO TAB(id) SELECT 1
GO 10
开始执行循环
批处理执行已完成 10 次。
【已注册服务器】
对于大量的数据库服务器管理,如果你们公司还没有开发平台来管理,那么,你可以借助“已注册服务器”来管理。
视图 -> 已注册的服务器
如下图,你可以把你管理的数据库实例都分类整理好,这样你随时都可以连接到你想打开的实例。还有一个比较好的功能是,你可以右击文件夹目录“新建查询”窗口,在该窗口执行的脚本,都会在目录下的所有实例执行。这对于批量服务器执行相同的SQL语句非常高效!
另一个小功能,你可以在已经连接的实例,一键将当前实例添加到“已注册服务器中”,如下图。
【代理作业多服务器管理】
“已注册服务器”可以管理大量的实例,类似地,SQL Server 代理提供了一个“多服务器管理”的功能。该功能可以对大量的实例管理相同的代理作业。
SQL Server 代理作业(右键) -> 多服务器管理 -> 将其设置为主服务器
当你把当前的实例设置为主实例后,你可以添加目标服务器,目标服务器是从“已注册服务器”那里选择的,因此得先添加到注册服务器。
当你创建作业的时候,你可以选择是本地服务器、还是多台目标服务器,对作业的增删改等操作,都会同步到所有你选择的目标服务器上,管理也是非常方便的。
【实时跟踪】
对于SQL的实时跟踪,大多数人想到的是 SQL Server profiler,或者扩展事件。这大可不必,SSMS 功能就展示了该功能,一键进行实时SQL跟踪显示。
XEvent探查器 -> 标准 / TSQL (双击)
双击即可打开跟踪。当然,生产环境可别乱来噢,会刷爆的!
【模板资源管理器】
模板资源管理器,SQL Server 常用的一些 SQL 模板,对于初学者或者开发同事,这非常有用,你不必每次都上网查询某些 SQL 语法怎么写了,只需双击一下。
视图 -> 模板资源管理器
【扩展事件导出到表】
扩展事件跟踪的一些信息,可存在缓存或文件中,但是临时查询或分析时,读取是比较麻烦的。SSMS 提供了一种临时导出扩展事件到表的方法。
实例:管理:扩展事件 -> 打开某个扩展事件 -> 扩展事件(SSMS菜单栏)-》导出到 -> 表
导出的表不用提前创建,定义好表名称就行。表中的每个字段都独立了,不再是 XML 格式,这很方便。
【分屏】
当打开多个查询窗口时,又想同一界面查看,可以点击查询窗口的“Tab”栏进行拖动,可放置在不同的方向位置上。如下图,将2个查询窗口分别显示在左右侧,可同时查看,方便对比。
【拆分(镜像屏)】
上面的分屏可能较多的同学知道了,但这个屏幕拆分可能就很少人知道了。查询窗口的右上角,有一个拆分符号,点击往下拉,就会出现两个内容一模一样的屏幕,上下屏都可以编辑,并实时同步显示。这对于代码较多,来回查看的比较时,是非常有用的。
【浮动】
浮动创建也是非常有用的。当你不想看到一个SSMS完整工具界面时,可以把查询窗口拖动使其脱离SSMS。用这个小窗口操作也非常方便,执行SQL时按键盘上的“F5”即可。
【刷新本地缓存】
你是不是经常发现有的数据库对象出现红色的波浪线,你知道这是什么意思吗?红色的波浪线说明该对象可能不存在,可是数据库明明存在该对象呢。这是由于本地缓存引起,只要刷新一下本地缓存即可变正常。
编辑 -> IntelliSense -> 刷新本地缓存
【AutoRecover】
有时候我们操作SSMS时,工具突然崩溃、或者系统重启,我们写的脚本是不是就不见了?不一定,当你再次重启 SSMS 时,它会提示你是否恢复之前的查询窗口内容。那么我们在哪里设置保存和恢复情况呢?
工具 -> 选项 -> 环境 -> 自动恢复
【活动监视器】
如果你没有监控服务器、没有脚本查看服务器资源使用情况,打开活动监视器是非常方便的,它收集了CPU、IO、批处理、进程、资源等待等信息,可以大致了解当前服务器的资源使用情况,通过当前窗口,可以方便快速解决我们遇到的问题。
除了上面一些特色有用的功能,SSMS还提供了非常多的功能,使用户能在界面进行向导操作,非常友好。其他有用的功能,如维护计划、生成脚本、导出导入数据、SQL Server Profiler、调试、快捷键(如注释、大小写转换)等,这些功能熟悉之后,都能提高我们的开发或运维效率。