尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

SSMS实战指南:从连接管理到性能调优的完整工具箱

SSMS实战指南:从连接管理到性能调优的完整工具箱 1. 为什么我还在用SSMS一个老SQL人的日常SQL Server Management Studio圈内人都叫它SSMS是微软官方为SQL Server提供的集成管理环境。说白了它就是你和数据库之间的那扇门——写查询、建表、调索引、看执行计划、做备份恢复几乎所有的数据库日常操作都在这一个工具里完成。我最早接触SSMS还是十几年前的事那时候数据库还是2000版本工具也没现在这么智能。这些年下来我见过不少人一上来就追求花哨的第三方工具兜兜转转一大圈最后发现SSMS才是那个最稳、最全、最不折腾的选项。它不是最酷的但绝对是最实用的。写这篇东西就是想把我在实际项目里用SSMS的经验整理一遍重点说那些常规文档里不会细讲的实操细节。不管你是刚入行的开发新人还是带项目的技术负责人只要你的工作离不开SQL Server这篇文章基本能帮你把SSMS用得更顺手。我会从环境准备开始一步一步拆解连接管理、查询调试、索引诊断、备份恢复这些高频场景中间穿插我自己踩过的坑和总结的技巧。先补一句大实话SSMS的功能是海量的日常我们真正高频用到的其实就是那么一二十个。把这套核心流程跑顺了剩下那些低频功能等真正用到的时候再去探索效率反而更高。2. 环境准备与版本选型别在这上面翻车2.1 下载与安装的版本陷阱SSMS的安装本身不复杂但版本问题很容易让人迷糊。微软现在把SSMS做成了独立安装包不再跟随SQL Server数据库引擎一起分发。也就是说即便你的服务器装的是SQL Server 2019你的客户端电脑也可以装最新版的SSMS来连接它。这里有一个非常关键的兼容性认知:SSMS的新版本一般都能向下兼容连接旧版本的SQL Server比如用SSMS 19.x连接SQL Server 2012、2014、2016、2017、2019都没问题。反过来就麻烦了老版本的SSMS连接新版本数据库经常会遇到不支持的功能或者元数据读取异常。所以我的建议很简单客户端SSMS尽量用最新的正式发布版不要因为数据库版本老就把客户端也装老。我见过有同事为了配合一个2012库专门装了2014版的SSMS纯粹是受罪完全没必要。安装的时候有几点值得注意安装路径不要选C盘系统盘SSMS会缓存很多脚本和临时文件放在非系统盘更省心。安装过程需要联网下载部分组件网络环境差的建议提前下好离线安装包。装完之后第一次启动会有一个选择主题和快捷键方案的引导页快捷键建议选Visual Studio方案后面用起来肌肉记忆更顺。2.2 连接数据库前的三个前置检查很多人连接不上数据库第一反应就是“工具坏了”或者“密码错了”其实大部分情况是环境问题。我总结了一个固定排查顺序第一步确认SQL Server服务在运行。直接在Windows服务管理器里看SQL Server (MSSQLSERVER)这个服务是不是“正在运行”。如果没跑起来工具再好也连不上。第二步确认连接字符串里的服务器名是实例名还是端口号。localhost或者服务器IP只能连到默认实例如果是命名实例得用“服务器名\实例名”的格式或者IP加端口比如192.168.1.100,1433。这一步说多了都是泪很多新人卡在这个逗号和反斜杠上。第三步确认防火墙放行了1433端口。如果是云端服务器还得看安全组规则。这一步不值得多说但一定要记得。提示SSMS的登录界面里有个“选项”按钮点开之后可以指定连接超时时间。内网环境下默认15秒够用连外网库的话建议调大到30秒减少误报超时。2.3 首次登录后建议立即调整的几个设置连接成功后别急着写SQL先把几个耽误事的默认设置改掉。打开“工具”菜单下的“选项”找到“查询执行”一栏把“执行超时时间”从默认的0秒改成比如600秒。默认0秒意味着无限等待看着好像挺好真遇到一个跑飞了的查询你会被长时间卡住动不了。我身边就有人因为这个默认设置任务里挂了个死循环查询整个上午都在等它超时。另外建议把“结果显示为网格”保持默认然后把“每次执行保存查询”关掉。这个保存查询的弹窗频繁出现烦得很关掉之后清净不少。字体字号方面默认的Consolas 10号有点偏小我习惯调到12号。数据库脚本经常很长字号调大一点长时间盯屏幕眼睛舒服很多。改字体的位置在“选项”里的“环境”一栏。3. 查询编辑器你一天呆得最久的地方3.1 模板参数化写查询之前先建好骨架很多人打开查询编辑器就是直接敲SELECT然后边写边想写着写着发现表名记错了或者字段没对上来回修。我用SSMS这些年最大的一个习惯就是先建模板再填参数。SSMS本身提供了对象资源管理器右键“编写表脚本为”的功能可以直接生成SELECT、INSERT、UPDATE、DELETE的模板。但我建议更进一步建立自己的查询模板。举个我常用的例子-- 生成某个表的完整字段清单 SELECT c.name AS 字段名, t.name AS 数据类型, c.max_length AS 长度, c.is_nullable AS 允许空 FROM sys.columns c JOIN sys.types t ON c.user_type_id t.user_type_id WHERE c.object_id OBJECT_ID(你的表名) ORDER BY c.column_id;这段脚本在SSMS里F5一跑就能把你需要操作的表的结构完整拉出来不用去对象资源管理器里一个个点开看字段。类似的模板还有分页查询模板、Top N抽查模板、锁等待排查模板。模板文件保存位置在“选项”里的“文本编辑器”中可以手动指定也可以直接在查询编辑器的“模板资源管理器”里管理。你可能觉得这不就是备个SQL文件嘛其实差别很大。SSMS的模板资源管理器支持分类目录里面还能放带参数的模板执行的时候会弹窗让你输入参数值。比如我有个通用的按时间段查日志模板参数是开始时间和结束时间弹窗输入即可方便得很。3.2 智能感知和脚本片段写得快还要写得准SSMS的智能感知IntelliSense是默认开启的它会在你输入表名、字段名的时候给出联想。但很多人的IntelliSense是坏的——要么不弹联想要么联想出来的是陈旧信息。这多半是因为本地缓存和数据库实际结构不一致导致的。遇到这种情况最快的处理办法是在查询编辑器里按CtrlShiftR刷新本地缓存。这个快捷键知道的人不多但极其好用。另外SSMS的代码片段Code Snippets功能也值得专门说。它支持你把一段常用的SQL片段绑定成一个简称输入简称再按Tab键就能自动展开成完整代码。比如我绑定了一个sf片段展开后就是SELECT TOP 100 * FROM WHERE ORDER BY这个用熟了以后写日常查询的速度能快40%。创建代码片段的路径在“工具”菜单的“代码片段管理器”里。文件格式是XML结构稍微有点绕第一次创建建议从网上找个现成的模板改一改或者直接用SSMS自带的几个片段。3.3 执行计划与结果网格看懂你的查询究竟干了什么写完查询按F5执行这只是万里长征第一步。真正决定一个查询能不能用的是看它的执行计划。SSMS里两种方式查看执行计划一种是“包括实际执行计划”快捷键CtrlM然后再执行另一种是“显示估计的执行计划”快捷键CtrlL。我平时调试慢查询习惯用实际执行计划因为它反映的是本次执行的真实情况。看执行计划要抓三个关键点看最耗费代价的操作符一般是表扫描、聚集索引扫描、键查找。看有无警告图标特别是隐式转换警告。看估计行数和实际行数是否严重偏差偏差大说明统计信息过期了。行数估计偏差这个问题我说一下。我曾经遇到一个查询明明只返回37行数据但执行计划里估计行数是98万行。优化器按98万行去设计执行计划结果选了一个糟糕的连接顺序整个查询跑了40多秒。处理办法很简单更新该表的统计信息UPDATE STATISTICS 表名跑完再执行估计行数就正常了查询也降到了几百毫秒。结果网格也有一些实用技巧。比如查询结果里的列名是英文的想看中文含义可以直接在SQL里给字段起别名。再比如网格模式下选中多行数据右键“复制带标题”可以直接粘到Excel里这个比手动一个个双击复制快太多了。4. 对象资源管理器管理任务的主战场4.1 表设计器的隐藏坑与正确用法对象资源管理器里右键某张表选择“设计”可以打开表设计器。这个图形化界面特别适合建表、改字段。但注意它有一个巨大隐患——保存的时候可能会触发表重建。如果你增加了一个不允许为空的字段并且没有指定默认值SSMS会提示“保存更改时需要重新创建表”这个重建过程对于大数据量的表来说相当危险期间可能会锁表甚至导致连接超时。所以我在生产环境修改表结构时基本不用设计器而是写ALTER TABLE脚本。比如增加一个带默认值的新字段ALTER TABLE dbo.用户表 ADD 注册来源 INT NOT NULL CONSTRAINT DF_用户表_注册来源 DEFAULT 0;这种方式只做元数据变更不会重建表速度快风险低。设计器更多用于快速查看表结构或者在一个全新的开发库里随心所欲地建表。4.2 生成脚本从图形界面到版本管理的桥梁SSMS有一个很实用但常被忽略的功能就是“生成脚本”。右键数据库选择“任务”里的“生成脚本”可以把整个库的表结构、存储过程、视图、数据等等全部导出成SQL脚本文件。这个功能我推荐大家养成习惯使用尤其是以下几个场景把开发库的表结构同步到测试库。给同事发一个干净的建库脚本不附带任何历史数据。把数据库结构纳入版本管理每次结构变更都生成一份脚本存档。生成脚本时注意到“选择选项”那一步把“编写数据的脚本”选择为“True”或者选定特定表。默认情况下只生成结构不生成数据想导数据得手动勾选。另外“高级”按钮里还可以设置生成DROP语句、包含IF NOT EXISTS等等按需调整。有一点千万注意生成脚本时不要把“全文目录”选上全文索引的脚本经常会因为环境和版本问题执行错误能手动建的尽量手动建。4.3 代理作业把重复劳动交给SSMS如果你是开发兼维护的角色一定会遇到很多重复性的数据库任务比如每周日晚上清理日志表、每天凌晨统计前一天的数据汇总。这些都可以通过SSMS的SQL Server代理来定时执行。在对象资源管理器里找到“SQL Server代理”节点右键“作业”选择“新建作业”。流程大概是在“常规”页里填作业名称和说明。在“步骤”页里写要执行的SQL或存储过程调用。在“计划”页里设置触发时间和频率。需要注意SQL Server代理服务需要单独启动默认可能是禁用状态。在Windows服务里找到SQL Server Agent把它设为自动启动。很多人建好了作业但从不执行一查原因代理服务压根没跑起来这种低级的坑踩一次就记住了。另外如果作业跑失败了怎么快速知道SSMS支持在作业属性里配置“通知”可以把失败信息通过数据库邮件发给指定邮箱。这个功能配置起来稍微繁琐一些但值得配置不然作业静默失败几天都没人发现数据早就乱套了。5. 性能调优三板斧索引、统计信息、等待状态5.1 索引碎片为什么你的索引越来越慢索引碎片这个问题属于“平时没人管出事才发现”的经典类型。随着表的增删改索引页会产生碎片查询性能随之下降。SSMS里查看碎片情况很简单右键表名选择“报表”里的“标准报表”然后选“索引物理统计”。这个报表会列出每个索引的碎片百分比。碎片率超过30%的索引建议直接重建5%到30%的可以做重组。重建索引可以用ALTER INDEX REBUILD重组用ALTER INDEX REORGANIZE。在大表上重建索引会锁表生产环境要安排在低峰期操作。我个人的建议是不要盲目对全库所有索引做维护。优先处理那些写入频繁的大表把维护脚本做成代理作业定期执行比某次心血来潮一次性全库重建要稳妥得多。5.2 缺失索引与统计信息过期SSMS执行查询的时候如果检测到可能存在缺失索引会在执行计划里给出绿色的提示。你可以在图形执行计划上右键“缺失索引详细信息”SSMS会直接生成一条创建索引的建议语句。我对缺失索引建议的态度是参考但不盲从。它给出的索引不一定是最优的特别是有多个单列索引建议的时候往往组合成一个复合索引效率更高。另外索引会占用空间、拖慢写入一定要结合业务场景判断。一个查询从10秒优化到1秒但如果它一天只跑两次那这索引的性价比就一般。统计信息过期的问题前面提过一次这里补充一个自查的脚本SELECT object_name(ips.object_id) AS 表名, s.name AS 统计信息名称, ips.last_updated AS 最后更新时间, ips.rows_sampled AS 采样行数, ips.rows AS 总行数 FROM sys.dm_db_stats_properties(OBJECT_ID(你的表名), NULL) ips JOIN sys.stats s ON ips.object_id s.object_id AND ips.stats_id s.stats_id;如果发现某张表的统计信息最后更新时间和表的修改频率相差悬殊就该考虑把自动更新统计信息开启或者在表变更高峰后手动更新关键统计信息。5.3 活动监视器一线故障排查利器数据库卡死、查询堵塞的时候SSMS里最直接的工具就是“活动监视器”。在对象资源管理器的数据库节点上右键选择“活动监视器”就能看到当前进程列表、等待类型、I/O开销这些实时指标。这里面最值得关注的是“等待类型”。比如你看到大量PAGEIOLATCH_SH等待说明查询在等磁盘数据页读入内存基本可以断定是IO瓶颈大量LCK_M_X等待说明有会话长时间持有排他锁阻塞了其他人。活动监视器还有一个好处就是能直接右键某个会话“查看详细信息”弹出来会显示该会话正在执行的SQL文本和运行参数。遇到线上卡顿的时候我一般先打开活动监视器看等待类型再找最可疑的会话拉出SQL判断是优化查询还是先杀进程止损。整个流程不超过两分钟是排查故障的第一步。注意活动监视器在系统负载极高的情况下打开本身也会消耗一点资源但相比它提供的信息价值这点开销完全可以接受。6. 数据备份与恢复关键时刻能救命6.1 完整备份与差异备份的搭配备份这个事情属于数据库管理里最基础也最容易被忽视的环节。SSMS里做备份很简单右键数据库选择“任务”里的“备份”选好备份类型和路径就行。但我在实际项目里反复强调一点永远不要只靠完整备份。完整备份的数据量越来越大每天做一次完整备份耗时长、占空间恢复时也要先还原一个巨大的备份文件。更好的策略是每周一次完整备份。每天一次差异备份。每15到30分钟一次事务日志备份。这个组合能保证最多丢失15分钟的数据而且日常恢复速度快。恢复的时候先还原最近一次完整备份再按顺序还原差异备份和事务日志备份就能把数据库推进到最新状态。SSMS的还原界面在“任务”里的“还原”选择“数据库”后会列出可用备份集。勾选要还原的备份集系统会自动生成还原顺序。需要注意“选项”页里有“覆盖现有数据库”和“保留已存在的连接”两个选项生产环境还原时一定要看清楚别手滑把正在用的库覆盖了。6.2 还原时的常见错误与检查点还原数据库时遇到“数据库正在使用无法获得独占访问权”的错误是最常见的。这个提示说明目标库上还有活跃会话。处理方法要么是把目标库设为单用户模式要么在还原选项里勾选“关闭现有连接”。我个人的做法是在还原前先执行ALTER DATABASE 库名 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;强制断开所有连接。还原完成后记得再切回多用户模式ALTER DATABASE 库名 SET MULTI_USER;。另外还有一个小坑还原之后数据库版本对不上。如果你用新版本SQL Server备份的库还原到旧版本SQL Server上会直接报错。这种情况下只能找对应版本的数据文件或者做导出导入别无他法。经常做备份还原操作的我建议在SSMS里把还原脚本生成下来留着复用。还原界面上有个“脚本”按钮点一下就能生成完整还原SQL以后参数微调即可。这比每次都在GUI上重新点一遍效率高很多。7. 调试存储过程与排查死锁实战中的硬骨头7.1 存储过程的本地调试技巧SSMS的调试功能没有那些付费工具那么强但基础的单步调试还是可以用的。打开存储过程按F11可以单步执行F10跳过F5继续。省去了手动拼参数、删除调试输出语句的麻烦。不过调试有一个前提SSMS调试要求本机安装SQL Server的客户端工具且需要连接权限。很多场景下调试连接会被公司安全策略拦截所以我还习惯用另一种土办法——临时加调试输出PRINT 当前用户ID CAST(UserId AS VARCHAR(20));在存储过程的关键节点加PRINT执行后在“消息”页签里查看输出。这种方式不依赖SSMS调试器在服务器端也可以跑排查范围广。我平时快速定位问题基本都用PRINT输出真正需要逐行看变量变化时才动用单步调试。7.2 死锁图SSMS帮你画出事故现场死锁是数据库并发场景下的经典问题。两个会话互相持有对方需要的资源僵持不下SQL Server会主动选择牺牲一个会话回滚事务被牺牲的那个就报1205错误。SSMS虽然没有专门的死锁图界面但有两个方法可以拿到死锁信息。一是在“SQL Server代理”里配置“警报”发生1205错误时触发作业保存死锁图二是如果开启了跟踪标志死锁信息会写到错误日志里可以在错误日志节点查看图形化的死锁链。我实际用过比较多的是在查询分析器里执行以下代码开启死锁捕获DBCC TRACEON (1222, -1); GO1222跟踪标志会在错误日志里打印详细的死锁报告包括每个会话执行的SQL文本、持有的锁和等待的锁。虽然不是图形化但文字信息足够定位到具体代码行。排查死锁的基本思路是看两个会话的SQL找到它们共同访问的资源然后想办法统一访问顺序或者降低锁粒度。7.3 临时表与表变量的选择在写存储过程或者复杂查询时经常要处理中间结果集。SSMS查询编辑器里支持两种主要方式临时表#表名和表变量表名。很多人纠结用哪个我的经验是数据量小、只在当前批处理里用、不需要索引的用表变量。数据量大、需要加索引、需要参与复杂JOIN的用临时表。临时表能建索引表变量不能虽然可以加主键但查询优化器对表变量的统计信息几乎为零。还有一个关键差异临时表允许在多个批处理之间共享表变量只能在当前批次内使用。如果你在存储过程里调用另一个存储过程并传结果那必须用临时表。这些都是血泪教训。我曾经写过一个报表存储过程中间用表变量存了十几万行数据后续JOIN直接跑出几十秒的执行计划后来换成临时表并加了合适索引优化到了2秒以内。SSMS里同样的代码换个存储介质性能差了一个量级。8. 新手常见问题速查我踩过的那些坑8.1 连不上服务器的十大原因这些问题我在社区和带新人时反复见到按出现频率列个表症状原因处理办法提示“用户登录失败”密码错误或登录名不存在检查用户名密码或在服务器上重置提示“找不到服务器”服务器名写错确认实例名和IP配置提示“TCP/IP连接超时”端口或防火墙问题检查1433端口放行提示“不允许远程连接”SQL Server未开启远程访问在服务器配置管理器里启用TCP/IP提示“占用内存过大”大查询导致内存压榨限制MAXDOP优化查询执行查询突然断连网络不稳定或超时设置连接池调整超时时间数据库脱机状态手动脱机或故障在属性里联机或检查磁盘空间权限不足数据库用户权限缺失用系统管理员账号授权提示“版本不支持”客户端老版本更新SSMS到最新发布版登录超时服务端负载过高检查服务器CPU和内存使用这里我多加一句SQL Server的登录方式分为Windows身份验证和SQL Server身份验证两种。新手在用SQL Server身份验证连不上时优先检查服务器上是否启用了混合验证模式。这个设置不在SSMS客户端而在服务器属性里的“安全性”页选“SQL Server和Windows身份验证模式”才行。8.2 执行计划永久缓存怎么办默认情况下SSMS会缓存一些查询计划和元数据方便后续快速响应。但这也带来一个问题频繁修改表结构后缓存里的计划还是旧的导致查询走错执行计划。处理办法是清缓存SSMS里执行DBCC FREEPROCCACHE; GO不过要提醒在生产库上执行这个命令会把所有缓存的执行计划全部清掉短期内CPU使用率会有一个明显的飙升因为所有SQL都要重新编译。所以要挑低峰期操作别在业务繁忙时段随便跑。还有一种情况是存储过程长期使用同一个旧计划。比如参数值波动很大有的值返回几行有的值返回几百万行优化器按第一次的值生成计划后就一直复用导致后来越跑越慢。解决方式是在存储过程内部加一句OPTION (RECOMPILE)让每次执行都重新生成计划。代价是每次执行要花一点编译时间但对于参数波动大的存储过程来说收益远大于代价。8.3 恢复被误删的数据“删错数据”可能是每个数据库从业者都要经历的成年礼。SSMS里没有一键撤销但有一些补救手段。如果数据库是完整恢复模式而且事务日志还在可以尝试从事务日志尾部备份中还原到误删之前的时间点。具体操作是在“还原”界面选择“时间点还原”手动指定一个误删操作之前的时间SSMS会自动找到该时刻的LSN并还原。如果连尾部分日志都没有那就只能靠之前的备份还原到最近时间点然后手工补录丢失的数据。所以备份策略的意义在这里全面体现。补录丢失数据这件事最怕的是没有相关源数据。我自己的经验是尽量提前在关键表上建好审计日志或者CDC变更数据捕获万一真误删了能快速通过审计日志还原操作语句构建反向SQL。这些都不是SSMS自带功能但要配合SSMS的可视化操作一起来用才能形成完整的防线。9. 把SSMS用得再顺手一点几个私藏技巧9.1 多数据库、多窗口并排显示接手的项目一多经常同时要开好几个数据库环境。SSMS支持多窗口并排在“窗口”菜单中选择“新建垂直选项卡组”就能把一个查询窗口拆成多个并排区域。我一般左边放表结构模块右边放SQL验证来回不用切窗口效率提升明显。还有一个细节SSMS里不同窗口的查询结果和错误消息是分开显示在对应窗口底部的这个默认行为很容易被忽略。当你发现某个窗口“没有结果”但SQL明明执行了先看一眼是不是看错窗口了。9.2 自定义颜色标记连接前就知道环境连接多个环境开发、测试、生产的时候很容易忘记自己正在操作哪个环境。SSMS支持为不同的连接设置颜色标记在连接对话框的“选项”里找到“连接属性”可以设置连接颜色。我把生产环境设成红色测试环境设成蓝色开发库设成绿色。这个习惯救了我好几次。按F5之前瞄一眼查询编辑器右上角的状态条颜色就能确认当前是在哪个环境避免把测试SQL舌到生产库上。SSMS的注册服务器功能也有类似效果但颜色标记是最直观的。9.3 用SQLCMD模式执行脚本文件SSMS的查询编辑器里可以开启“SQLCMD模式”在“查询”菜单中切换。这个模式允许你在脚本里嵌入一些命令比如从外部文件读取SQL内容或者按条件判断是否执行。举个例子你可能有一个备份脚本希望在某些机器上执行完整备份在另外的机器上只做差异备份。用SQLCMD模式可以这样写:CONNECT SERVER1 -U sa -P 密码 BACKUP DATABASE [MyDB] TO DISK ND:\backup\MyDB.bak WITH INIT; :CONNECT SERVER2 -U sa -P 密码 BACKUP DATABASE [MyDB] TO DISK ND:\backup\MyDB_diff.diff WITH DIFFERENTIAL;这个功能适合批量运维场景。你可以在一个脚本文件里集中管理多个服务器的同类型操作配合SQLCMD变量脚本还能变成半参数化的。9.4 历史执行记录找回SSMS有一个内置的“查询历史记录”功能吗严格来说没有但它有类似效果的工具——在“工具”菜单里可以找到“SQL Server 性能面板”下面的“活动监视器”里面记录了部分已执行查询信息。如果需要保留完整的SQL执行历史更可靠的办法是开启SQL Server的查询存储功能Query Store。这是一个数据库级功能在数据库属性里开启之后SSMS的对象资源管理器对应库下会出现“查询存储”节点能看到过去一段时间的执行计划、执行次数、平均耗时等指标。比活动监视器更系统特别适合长期调优场景。10. 写在最后把SSMS当老伙计而不是高级编辑器写了这么多我最想传达的一个观点是SSMS不是编辑器不是IDE它是你和整个数据库系统交互的控制台。你得理解它背后对接的那些数据库机制才能真正用出效率。在我自己带项目的这些年里常见的团队分两种。一种是只用SSMS的图形界面拖拖拽拽查询还是复制粘贴现成的出了问题毫无头绪。另一种是把SSMS当作一个完整的工作平台快捷键背得滚瓜烂熟执行计划看得明明白白备份恢复的脚本都提前备好遇到故障能在几分钟内定位。差距不是智商差异纯粹是使用深度和习惯的差异。建议你把前面说的那些快捷键、模板、检查脚本一点点用起来习惯成自然之后你会发现工作节奏完全不一样。最后再分享一个小技巧在SSMS里遇到不认识的报错直接选中错误信息里的错误编号按F1SSMS会跳转到官方文档对应的说明页。很多错误码下面都附带了详细的解释和修复示例比在搜索引擎里碰运气可靠得多。工具这东西越用越熟。SSMS能走到今天经历了十几年的迭代里面的功能和细节远超大多数人的想象。不过也别贪多把那二十个高频场景用精了日常工作的质量就已经很好了。
返回列表