我曾经在一个地方,一个常见的做法是使用结对编程工作。 我记得多少的小东西,我们可以从对方的代码一起工作时学习。 拿起新的快捷方式,代码片段等。随着时间的推移显著提高了我们编写代码的效率。
自从我开始使用SQL Server的工作,我一直留在我自己的。 最好的习惯,我通常会与其他人,我现在不能做的共同努力挑。
因此,这里的问题:
- 你是什么人在编写高效使用SQL Server Management Studio的TSQL代码的技巧?
- 请保持提示,2 - 3事情/你想提高你的编码速度快捷键
- 请TSQL和SQL Server Management Studio中2005/2008范围内停留如果要素是具体到Management Studio中的版本,请注明:例如:“SQL Server 2008中只能”
编辑:
恐怕我可能已经被一些你误解了。 我不是在寻找一个有效的编写代码TSQL,而是关于如何有效地使用Management Studio来加快编码过程本身的意见建议。
该类型我要找的答案是:
基本上那些小东西,使编码体验了一下更高效,更愉快。
Answer 1:
看看红门SQL提示 -这是一个伟大的产品(如最的红门的贡献)
SQL通知也是一个伟大的免费(在线)的格式化程序很长,有时可能失控的工具。
除此之外,我从痛苦的经历了解到这是一个很好的事情先于任何 DELETE
与语句 BEGIN TRANSACTION
。 一旦你确定你的语句仅删除它应该,然后你可以COMMIT
。
救了我在许多场合;-)
Answer 2:
社区拥有维基回答 - 随意编辑或添加评论:
键盘快捷键
- F5,CTRL + E或ALT + X -执行当前选定的TSQL代码
- CTRL + R -显示/隐藏结果窗格
- CTRL + N -打开新的查询窗口
- CTRL + L -显示查询执行计划
编辑快捷键
- CTRL + K + C和CTRL + K + U -的代码(由未切割的建议的)注释/取消注释选择的块
- CTRL + SHIFT + U和CTRL + SHIFT + L -改变所选的文本以大写/小写
- SHIFT + ALT +选择文本-选择/剪切/复制/粘贴文本的矩形块
插件
- 红门SQL提示 -智能感知(由Galwegian建议)
- SQLinForm - TSQL的格式(由Galwegian建议)
- 穷人的T-SQL格式化 -开源格式插件
其他提示
- 使用逗号前缀样式(由凯德空肠Roux建议)
- 使用键盘快捷键(由kcrumley建议)
相关链接
- SQL Server Management Studio中的键盘快捷键(名单)
Answer 3:
+1的SQL提示。
真实的东西简单,我想我从来没有看到过 - 这将与几乎任何SQL环境(甚至其他语言)工作:
经过12年的SQL编码的,我最近成为一个转换到逗号前缀样式看到它在一些SSMS生成的代码后,我发现它非常有效。 我很惊讶,我以前从未见过这种风格,特别是因为它极大地增强了我的工作效率。
SELECT
t.a
,t.b
,t.c
,t.d
FROM t
这使得它很容易被列出,通过列表组,等我发现,我花少了很多时间与添加和后cut-从列表的末尾删除逗号愚弄编辑选择列表,参数列表,顺序和粘贴操作 - 我想成功的话更容易,因为你总是在末尾添加的东西,并与后缀逗号,需要您将光标移动更多。
试试吧,你会惊奇地发现 - 我知道我是。
Answer 4:
我最喜欢的快速提示是,当你在对象资源管理器中展开表的名称,只是字拖colums查询窗口将会把所有列的列表,在表中插入查询。 更容易直接删除你不想要,而不是键入你想要的那些的那些,它是那么容易,它阻止人们使用的真正可怕的SELECT *语法。 而且它可以防止输入错误。 当然你也可以单独拖动列也是如此。
Answer 5:
在查询中突出的实体,按ALT + F1将运行sp_help吧,给你的任何细分列,索引,参数等。
Answer 6:
尝试总是使用,你可以和索引的所有字段最查询中使用最小的数据类型。
尽量避免服务器端游标尽可能。 总是坚持一个“基于集合的方法”,而不是用于访问和操作数据的“程序的方法”。 游标通常可以通过使用SELECT语句来代替被避免。
始终使用在查询分析器或SHOWPLAN_TEXT或SHOWPLAN_ALL图形执行计划命令来分析您的查询。 确保您的疑问做一个“索引查找”,而不是“索引扫描”或“表扫描。” 表扫描或索引扫描是一个非常糟糕的事情,应该尽量避免使用。 选择在右列正确的索引。 使用更可读的ANSI标准加入条款,而不是老式的联接。 与ANSI连接,WHERE子句仅用于过滤数据。 凡与老式的连接,WHERE子句同时处理连接条件和过滤数据。
不要让你的前端应用程序查询/直接使用SELECT或INSERT / UPDATE / DELETE语句操作数据。 相反,创建存储过程,让你的应用程序访问这些存储过程。 这样可以使数据访问清洁整个应用程序的所有模块一致,同时在数据库中集中的业务逻辑。
谈到存储过程,不以“sp_”前缀您的存储过程的名称。 前缀以sp_被保留用于与SQL Server附带的系统存储过程。 当SQL Server的遇到程序名称开始以sp_,它首先会尝试在主数据库的程序,然后查找提供的任何限定符(数据库,所有者),然后将其DBO试图为所有者。 所以,你真的可以节省时间,避免了“以sp_”前缀查找存储过程。
避免使用动态SQL语句尽可能地。 动态SQL往往比静态SQL慢,因为SQL Server必须生成执行计划在运行时每次。
如果有可能,尽量使用集成身份验证。 这意味着,忘了SA和其他SQL用户,请使用Microsoft用户配置基础结构,始终保持您的SQL服务器,上最新与所有必需的补丁程序。 微软做好开发,测试和发布补丁,但它是你的应用它的工作。
搜索在amazon.com书约,并购买好评论!
Answer 7:
CTRL + I进行渐进式搜索 。 通过结果撞上F3或CTRL + I循环。
Answer 8:
如果从对象资源管理器列节点拖动一个表它把列的CSV列表中查询窗口给你
Answer 9:
键盘快捷键。 一旦你弄清楚你写什么类型的查询了很多,写程序的存储过程实现自动化的任务,并将它们映射到键盘快捷键。 例如, 本文关于如何避免打字会谈你想只得到快速浏览一下从该表样本数据每次“从SomeBigTable选择前10 *”。 我有这个过程的极大扩展版本,映射到CTRL + 5。
又过了我有:
- CTRL + 0:快速脚本表的数据,或者一个进程,UDF,或视图的定义
- CTRL + 9:查找其名称中包含指定字符串的任何对象(当你知道你有在名称中“选项”的操作,但是你不知道它的名字打头)
- CTRL + 7:发现,其包括在其代码给定的字符串的任何PROC,UDF或视图
- CTRL + 4:找到具有给定名称的列中的所有表
...和一些更不想到现在。 有些东西可以通过SSMS现有接口来完成,但SSMS的窗口和窗口小部件可能会有点缓慢的加载起来,特别是当你查询反对在互联网上的服务器,而我更喜欢没有来接我的手断键盘反正。
Answer 10:
只是一个很小的一个-矩形选择ALT + DRAG
进来非常方便的复制粘贴+垂直对齐的列清单(例如,当手动编写一个巨大的UPDATE)。 写作TSQL是关于我曾经使用过的唯一一次!
Answer 11:
对于子查询
对象资源管理器>右键单击表>脚本表作为>选择以>剪贴板
然后你就可以在你想要的部分只是粘贴,作为一个子查询。
模板/片段
创建你自己只有一个代码段模板。 然后,而不是打开模板作为一个新的文档只是将其拖动到您当前查询插入片段。
一个片段可以简单地是包含注释的组头的或只是一些简单的一段代码。
隐式交易
如果你不会记得你删除statemens之前启动一个事务,你可以去选择和您所有的疑问缺省设置隐性事务。 他们总是需要一个明确的提交/回滚。
隔离级别
进入选项,并设置隔离级别为默认READ_UNCOMMITED。 你不要这样,需要在你的所有即席查询键入NOLOCK。 只是不要忘了写一个新的视图或存储过程时,将表提示。
默认数据库
您的登录都有一个默认数据库由DBA设置(对我来说,通常是几乎每一次不想要一个)。
如果你希望它是因为该项目的您目前正在使用一个不同的一个。
在“已注册的服务器窗格”>右键点击>属性>连接属性选项卡>连接到数据库。
多次登录
(这些你可能已经做虽然)
服务器多次,每次注册不同的登录。 然后,您可以在对象浏览器中打开多次在同一台服务器(每一个不同的登录)。
为了执行而不是复制的查询,你已经有一个不同的登录写了相同的查询,只是做了查询窗格>连接>更改连接右键单击。
Answer 12:
这有助于提高我做什么精度的另一件事情是不是真的使用T-SQL本身管理Studio提示,但一个。
每当我写一个UPDATE或DELETE语句的第一次,我结合了选择到它,这样我可以看到什么记录都将受到影响。
例子:
select t1.field1,t2.field2
--update t
--set field1 = t2.field2
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10
select t1.*
--delete t1
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 = 'test'
(请注意我用SELECT *这里只是为了说明,我通常只会选择几个字段我需要看到的是,查询是正确的。有时候,我可能需要看到在矿井加入其他表,以及我打算在记录中的字段删除,以确保参加工作的方式,我认为它会)
当你运行该代码,运行选择首先要保证它是正确的,然后注释选择线(S)出来并取消删除或更新的部分。 通过做这种方式,你不小心运行了删除或更新您已经检查之前。 你也避免遗忘注释掉选择造成更新来更新数据库表中的所有记录,如果你使用此语法并取消选择运行它可能出现的问题:
select t1.field1,t2.field2
update t
set field1 = t2.field2
--select t1.field1,t2.field2
from mytable t1
join myothertable t2 on t1.idfield =t2.idfield
where t2.field1 >10
正如你可以从上面的例子中看到的,如果你取消注释选择并忘记重新将其注释掉,哎呀你刚刚更新了整个表,然后运行一个选择,当你以为只是运行更新。 刚才有人这样做,在我的办公室本周使它所以只有全力以赴的客户一个人可以登录到客户网站。 因此,避免这样做。
Answer 13:
使用对象资源管理器的过滤器按钮来快速找到部分文本名称中有特定的对象(表,存储过程等)或发现属于一个特定的模式对象。
Answer 14:
我有一个计划任务,每个晚上每个对象(表,存储过程等)写入文件。 我对输出目录的全文搜索索引集,所以,当我在寻找某些字符串(例如,恒定)是什么地方埋在DB我可以很快找到它。
在Management Studio中您可以使用任务>生成Scrips ...命令来看看如何执行此。
Answer 15:
我喜欢设置CTRL + F1的键盘快捷键为sp_helptext的 ,因为这可以让你突出一个存储过程,并快速浏览一下它的代码。 我觉得这是一个很好的补充到默认ALT + F1 sp_help将快捷方式。
Answer 16:
我建议你创建你的SQL脚本标准,并严格遵守。 还可以使用模板快速创建不同类型的存储过程和函数。 这是一个关于在SQL Server 2005 Management Studio中的模板问题
如何创建的SQL Server 2005在SQL Server 2005 Management Studio中存储过程的模板?
Answer 17:
我SSMSBoost的开发插件,这是最近发布的SSMS2008 / R2,其用意是增加补充说,加快日常任务的特点:
Shorcuts:F2 - (在SQL编辑器):脚本对象位于unted光标
CTRL + F2 - (在SQL编辑器):找到位于下光标在对象资源管理对象和重点IT +它包括快捷方式编辑器,中缺少SSMS2008(在SSMS2012来了)
也SSMSBoost增加了工具栏的按钮:
- Syncronize SQL编辑器连接到对象资源管理器(在对象资源集中当前数据库)
- 管理自己的首选连接,并通过组合框(包括服务器之间的跳跃)它们之间进行切换
- 自动替换:输入“SEL”将被替换
select * from
,你也可以添加自己的令牌替换对 - 还有一些比较实用的功能
Answer 18:
显示用CTRL + SHIFT + Q的查询设计器
Answer 19:
使用的TRY / CATCH功能进行错误捕获。
亚当Machanic的专家SQL Server 2005的编程是一种固态技术和实践的重要资源。
使用所有权链接存储的特效。
利用模式的执行数据的安全性和角色。
Answer 20:
使用对象资源管理器详细信息,而不是对象资源管理器中查看你的表,这样你可以按下一个字母,并将它转到第一台以该字母前缀。
Answer 21:
如果你与开发商合作,往往得到的是被格式化为一个长行的代码,代码条子那么SQL漂亮的打印机添加为SQL Server Management Studio中可能有很大帮助,有超过60多个格式化选项。 http://www.dpriver.com/sqlpp/ssmsaddin.html
Answer 22:
使用书签是保持你的理智,如果你正在使用或故障排除一个很长的过程很好的方式。 比方说,你与衍生领域中的外部查询工作,它的定义是向下的内部查询内部另有200线。 你可以书签两个位置,然后迅速来回走在两者之间。
Answer 23:
如果你需要编写大量的存储过程的某种类型的API。 你可能会喜欢这个工具,我写的时候我是一个程序员。 假设你有一个200列的表需要具有写入插入/更新,另外一个删除一个存储过程。 因为你不想让你的应用程序直接访问表。 就在声明部分将是一个繁琐的任务但如果代码的一部分就是为你写的。 下面是一个例子...
CREATE PROC upsert_Table1(@col1 int, @col2 varchar(200), @col3 float, etc.)
AS
BEGIN
UPDATE table1 SET col1 = @col1, col2 = @col2, col3 = @col3, etc.
IF @@error <> 0
INSERT Table1 (col1, col2, col3, etc.)
VALUES(@col1, @col2, @col3, etc.)
END
GO
CREATE PROC delete_Table1(@col1)
AS DELETE FROM Table1 WHERE col1 = @col1
http://snipplr.com/view/13451/spcoldefinition-or-writing-upsert-sp-in-a-snap/
注意:您也可以得到原代码和文章写于2002年(我现在觉得自己老了!)
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=549&lngWId=5
Answer 24:
上突出显示的文本使用Tab键会缩进它。 尼斯轻松地安排您的代码以可读格式。 此外,Shift + Tab将取消缩进。
Answer 25:
F5运行当前查询是一个轻松取胜,在那之后,CTRL + K + C的普通MS编辑器命令注释掉选定的文本,然后按CTRL + K + U取消注释。
Answer 26:
这是一个伟大的一个我最近发现 - 它可以让你选择一个文本矩形截面无论换行符。 非常方便的快速剪辑出一个子查询或列表。
Answer 27:
Devart” SQL完整的Express版是一个SSMS插件,是一个自由和有用的插件。 它提供了急需的代码格式和智能感知功能。
我也用SSMSToolsPack
插件,这是非常不错的。 我爱;
- 这是SQL代码片段,您可以在代码片断创建短键和它,当你键入这些键,然后按回车自动添加它们。
- 通过搜索历史来获取你的查询,你几个月前跑了,忘了,节省了我很多时间。
- 恢复最后一次会议。 现在,我从来没有拯救我的疑问,如果我必须只需重新启动我的窗户。 我只要按一下恢复最后一次会议,我的最后一次会议,并得到恢复和连接自动创建。
- 从创建查询结果(非常有用)insert语句。 只是喜欢这个插件。
小钳位近期推出。 SSMSToolsPack是不是免费的了的SSMS 2012年它仍然是免费为SSMS 2005 SSMS和2008年, 直到呢 。 只有当你想购买它,当你迁移到SSMS 2012,否则可能这是断奶远离它一个好主意,用它。
Answer 28:
我热烈推荐红门SQL提示。 自动发现(智能感知上的表,存储过程,函数和原生功能)是不折不扣的真棒! :)
它配备了一个价格虽然。 还有的东西没有免费软件版本。
Answer 29:
意识到这两个(?)不同类型的SQL Server Management Studio中可用的Windows的。
如果右键单击一个表,然后选择Open
它会使用一个可编辑的网格,你可以修改的细胞。如果您用鼠标右键单击数据库,并选择New Query
,将创建一个稍微不同类型的窗口,你不能改变的电网的,但它给你一些很好的特性,如允许不同的代码片段,让您可以通过选择单独执行它们。
Answer 30:
使用SELECT INTO
查询迅速/轻松地备份数据表的工作和试验。
文章来源: SQL Server Management Studio – tips for improving the TSQL coding process