我曾在一个地方的常见的做法是使用对方案编制。我记得有多少小东西我们可以互相学习的时候一起工作上的代码。拿起新的快捷方式,代码段等。有时显着提高我们的效率的编写代码。

因为我开始工作与SQL服务器我一直留在我自己的。最好的习惯我通常会从挑选工作与其他的人,我不能现在要做的。

因此,这里的问题:

  • 是什么你的技巧有效地 写TSQL代码使用SQL服务器 管理工作室吗?
  • 请保持 技巧2–3/快捷方式 你想改善你的速度 编码
  • 请留的范围内 的TSQL和SQL服务器管理 工作室2005/2008如果特征是 具体版本的 管理工作室请说明:例如"工作与SQL服务器2008年 只有"

编辑:

我恐怕我可能会被误解了你们中的一些。我不是在寻找撰写技巧有效TSQL码而是建议如何有效地使用管理工作室,以加快编码过程本身。

这种类型的答案,我要寻找的是:

  • 使用的模板,
  • 键盘-快捷方式,
  • 使用智能感知的插件等。

基本上那些小事情,使编码经验的一位更有效率和令人愉快的。

有帮助吗?

解决方案 2

社区拥有的wiki的答案-随时修改或添加意见:

快捷键

  • F5, CTRL + EALT + X -执行目前所选择的TSQL码
  • CTRL + R –显示出隐藏结果窗
  • CTRL + N –打开新的查询窗口
  • CTRL + –查询显示执行计划

编辑快捷方式

  • CTRL + K + CCTRL + K + U -评论/取消选择的区块的代码(建议通过无切片)
  • CTRL + 移位 + UCTRL + 移位 + -变化选择的文本以上/下情况
  • 移位 + ALT +选择文本的选择/切割/复制、粘贴矩形区块的文本

插件

其他技巧

  • 使用逗号前缀式(建议通过凯德鲁)
  • 使用键盘的促进剂(建议通过kcrumley)

有用的链接

其他提示

看看 红门的SQL提示 -这是一个伟大的产品(大多数的红门的贡献)

SQL通知 也是一个伟大的自由(在线)的工具,用于格式的长期过程,有时可以获得不可收拾的地步。

除此之外,我已了解到从痛苦的经验,这是一件好事 前任 DELETE 发言一 BEGIN TRANSACTION.一旦你确定你的发言是仅删除什么,它应该,然后你可以 COMMIT.

救了我在多个场合;-)

+1SQL提示。

事实很简单,我想我从来没有见过-它将与任何SQL环境(和其他语言甚至):

经过12年的SQL编码,我最近成为一个转换为逗号前缀式后,看到它在一些短程产生的代码,我已经找到它非常有效的。我感到非常惊讶,我从来没有见过这样的风格之前,特别是因为它增强了我的生产力极大。

SELECT
t.a
,t.b
,t.c
,t.d
FROM t

这使得它很容易地编辑选择清单,参数清单,以便通过列表团的名单,等等。我发现,我花了很多小时候欺骗与增加和删除逗号,从名单后剪切和粘贴操作-我猜它工作更加容易,因为你几乎总是添加的东西结束时,与后缀逗号,即需要你的光标移动更多。

试试吧,你会感到惊讶-我知道我是。

我最喜欢快的技巧是,当展开一个表格的名称在目资源管理器中,只是拖拉这个词列的查询屏幕上将把一个列表中的所有表中列入的查询。更加容易,只是删除那些你不想比类型的人,你想和它是那么容易,它可以防止人们使用真正可怕的选择*语法。它阻止输入错误。当然你可以单独拖列。

突出的一个实体在查询,并按压 ALT + F1 将运行sp_help,给你一个崩溃的任何列、索引、参数等等。

尝试总是使用最小数据类型,你可以和索引的所有领域的大多数使用的查询。

尽量避免服务器的端游标尽可能多的。总是坚持设置为基础的方法',而不是一个'的程序性方式'访问和操作的数据。光标,往往可以避免采用选择的发言,而不是。

总是使用图形执行计划中的查询分析器或SHOWPLAN_TEXT或SHOWPLAN_ALL命令来分析你的查询。请确保您的查询做一个"索引寻求",而不是一种"索引扫描"或"表格的扫描。" 表扫描和索引扫描是一个非常坏的事情,并应避免在可能的情况。选择正确的索引的权利列。使用更具可读性ANSI标准的加入条款,而不是旧风格的联接。与ANSI联接,其条款只用于过滤数据。那里有老式加入,其中的条款处理的加入条件和筛选数据。

不要让你的前端应用程序,查询/操作的数据直接使用选择或INSERT/UPDATE/DELETE发言。相反,创建储存程序,并且让您的应用程序访问这些储存的程序。这会保持数据的访问清洁和一致的所有模块的应用程序,同时集中的业务逻辑内的数据库。

在谈到存储程序,不前缀你的存储程序的名称与"sp_".前缀sp_保留的系统存储程序,船SQL服务器。每当SQL服务器遭遇的过程的名称开始sp_,它首先试图定位的过程中掌握的数据库,那么它看起来为任何限定词(数据库、所有者)提供的,那么它试图dbo作为所有者。所以你真的可以节省时间定位存储程序通过避免"sp_"前缀。

避免动态SQL发言尽可能的。动态SQL往往低于静态SQL,作为SQL服务器上必须产生一个执行计划的每一个时间在运行时间。

当是可能的,尝试使用集成身份验证。这意味着,忘记了sa和其他人SQL用户,使用微软的用户配置基础设施,并始终保持你的SQL服务器,最新的所有要求的增补程序。Microsoft做好发展、试验和释放的补丁但这是你的工作来应用它。

在搜索amazon.com 书与良好的评论,并购买它!

CTRL + 对于 渐进式搜索.打 F3CTRL + 循环的结果。

如果你拖从目Explorer列节点为一个表它把CSV名单列在查询窗口对你

键盘的促进剂。一旦你出什么样的查询,你写了很多,写实用存储程序自动化的任务和地图,他们以快捷键。例如, 这篇文章 谈到如何避免输入"选择顶10*从SomeBigTable"每次你只想得到一个快速的看样本数据表。我已经有了一个大大的扩展版本的这一程序,映射到 CTRL + 5.
几个我已经得到了:

  1. CTRL + 0:快脚本表的数据,或proc,UDF,或视的定义
  2. CTRL + 9:找到任何目的,其名称中包含一定string(当你知道你有一个程序用"选择"的名称,但是你不知道它的名字开始)
  3. CTRL + 7:找到任何proc,UDF,或视,包括给予串在它的代码
  4. CTRL + 4:找到所有的表,有一个列有的给定名称

...和一些更多的没想到现在。这些东西可以通过现有的接口在短程,但短程的窗户和小部件可能会有点慢装起来,特别是当你查询服务器在互联网上,我不喜欢具有挑选我的手断的键盘呢。

只是一个很小的一个长方形的选择 ALT + DRAG 来真的很方便复制+贴垂直排列的清单(例如当手编写一个大规模的更新)。写TSQL是唯一的时候,我曾经用它!

对于子查询

目explorer>权击表>脚本表为>选择>的剪贴板

然后你可以粘贴在该部分在这里你想要那样子查询。

Templates/段

创建你自己的模板只有一个代码段。然后而不是开放的模板作为一个新的文档,只是将它拖到你目前的查询插入该段。

一段可以简单地将一套头评论或者只是一些简单的代码。

隐含的交易

如果你不会记得以开始交易之前你删除statemens您可以去选择和设置隐式交易的默认情况下,在你所有的查询。他们总是需要一个明确的提交/rollback。

隔离水平

去选择和设置隔离级READ_UNCOMMITED默认。这样你不需要型NOLOCK在所有的你的特别查询。只是不要忘了的地方表示当编写一个新的视图,或存储的过程。

默认数据库

登录已有默认数据库设置的DBA(我说的是通常不需要一个几乎每一个时间)。

如果你想要一个不同,因为项目目前的工作。

在已注册的服务器窗'>权击>性>的连接性能标签>连接的数据库。

多次登录

(这些你可能已经完成,虽然)

登记册服务器多次,每一个不同的登录。然后你可以拥有相同的服务对象打开浏览器多次(每一个不同的登录)。

执行同样的查询,你已经写了一个不同的登录,而不是复制的查询只是做一个正确的点击超过查询窗格>连接>的变化连接。

另一件事,有助于提高准确性对我做什么是不是一个真正的管理工作室尖但是一个使用t-sql本身。

每当我写的更新或删除的发言第一次我把一个选择成它,这样我可以看到的是什么记录都将受到影响。

实例:

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'

(注意我用了选择*在这里只是用于说明,我通常只能选择的几个领域,我需要看到,查询是正确的。有时候我可能需要看到的领域,从其他表中加入以及记录我的计划中删除,以确保参加工作的方式我认为它会)

当你跑这个代码,你跑的选择首先以确保它是正确的,那么评论的选择线(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

你可以看到从上面的例子,如果你取消的选择和要忘记重新评论,哎呀,你只是更新整个表格然后跑一个选择的时候你以为只是运行更新。有人刚刚有没有在我的办公室这个星期使它使只有一个人的所有客户可以登录的客户网站。所以要避免这样做。

使用过滤器按钮在物资源管理器快速找到一个特定的对象(表,储存程序,等等。) 从部分案文的名称或找到对象属于一个特定的模式。

我有一个计划的任务,每天晚上写各对象(表,sproc,等等。) 文件。我有全文检索的索引集在输出的目录,因此,当我在寻找一个特定的string(例如,一个不变),被埋在某个地方数据库,我可以非常迅速地找到它。

在管理工作室可以使用的任务>产生处方药...命令来看看如何执行这一点。

我喜欢设置了快捷键的 CTRL + F1 作为 sp_helptext, ,因为这可以让你一个突出的存储的过程和迅速地看看它的代码。我发现这是一个很好的补充到默认的 ALT + F1 sp_help 快捷方式。

我建议你创建的标准SQL脚本,并坚持他们。还使用模板,以迅速建立不同类型的存储的过程和功能。这里是一个问题有关的模板在SQL服务器2005年管理工作室

你怎么创造SQL Server2005存储程序模板,在SQL服务器2005年管理工作室吗?

我的开发SSMSBoost加在最近发布SSMS2008/R2,目的是增加添加功能,可加速的日常任务:

支援:F2 -(在SQL编辑):脚本目位于利坚合众光标

CTRL + F2 -(在SQL编辑):找到对象的位于下游标对象资源管理和注重它 这包括快捷方式编辑,那就是失踪SSMS2008(即将在SSMS2012)

还SSMSBoost增加了工具栏上有个按钮:

  • 必须SQL编辑的连接物资源管理器(重点是当前数据库中目浏览器)
  • 管理自己的首选连接和交换它们之间通过合箱(包括跳之间的服务器)
  • 自动代替:打字"sel"将取代它的 select * from 你也可以加入你自己的牌替换对
  • 和更多一些有用的特征

SSMSBoost toolbar

显示 查询的设计师CTRL + 移位 + Q

使用的尝试/赶上功能性的错误。

亚当Machanic的专家SQL服务器2005年编程是一个伟大的资源用于固体技术和做法。

使用所有权链接的存放处.

使用的架构,以实施数据安全和角色。

使用的对象资源管理的详细信息,而不是象资源管理器,用于观看你的表格,这样,你可以按一封信,并让它去的第一个表这封信的前缀。

如果你的工作与开发的,经常得到一种条码格式作为一个长线的代码,然后sql漂亮的打印机的加SQL服务器的管理工作室可能有很大帮助60多个+器的选择。http://www.dpriver.com/sqlpp/ssmsaddin.html

使用书签好的方法让你理智,如果你正在使用或故障排除一个很长的过程。让我们说你工作得出场在一个外部查询和它的定义是另一个200行在内的内部查询。你可以收藏这两个地点再快速来回走两者之间的关系。

如果你需要编写很多sprocs API某种。你可能会喜欢这的工具,我写的时候我还是个程序员。说你有一个200列表,需要有一个sproc书面插入/更新,另一个删除。因为你不想要你的应用程序直接访问表。只要《宣言》的部分将是一项繁重的任务,但不是如果一部分代码写给你。这里是一个例子...

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

使用 在突出文本将缩进。很好很容易地安排你的代码可读的格式。此外, 移位 + 将消缩进.

F5运行目前的查询是一个容易的胜利,在这之后,通用MS编辑指令的 CTRL + K + C 评了选定的文本,然后 CTRL + K + U 要取消.

  • ALT+SHIFT +选择

这是一个伟大的一个,我最近发现的-这可让你选择的矩形部分的文本,无论断行。非常方便用于裁剪出一个子查询或列出迅速。

Devart'SQL完成表达版是一个短程的插件,并是一个免费的和有用的插件。它提供了急需的码格式和智能感知的特点。

我也使用 SSMSToolsPack 插件,这是非常好的。我爱;

  1. 这是SQL段,您可以创建的短键用于代码段和它的追加他们自动类型,这些按键按键。
  2. 通过搜索历史上来检索查询,你跑个月前,忘了,节省了很多我的时间。
  3. 恢复最后一次会议。现在我永远不会救我的查询,如果我要的只是重新启动我的窗户。我只是击中恢复的最后一届会议和我的最后一届会议上得到恢复并创建连接是自动的。
  4. 创建插入报表的查询结果(非常有用的)。只是喜欢这个插件。

一个小赶上近引入的。SSMSToolsPack不是免费再用于短程2012年。它仍然是免费的,对短程2005年和短程2008年, 直到呢.使用它只是如果你想买它时你迁移到短程2012年。否则可是一个很好的想法摆脱离。

我热烈推荐红门的SQL提示。自动发现(智能上的表格,保存程序、职能和司机的职能)是没有什么短的真棒!:)

它是有代价的。没有免费软件版本的事情。

意识到的两个(?) 不同类型的窗口提供SQL服务器的管理工作室。

如果你击表并选择 Open 它将使用一种编辑的网格,你可以修改的细胞。如果你右击的数据库,并选择 New Query 这将创建一个稍微不同的类型的窗口,你不可以修改的格,但是它给你其他一些不错的功能,例如允许不同的代码段和让你执行它们分别由选择。

使用 SELECT INTO 查询迅速/容易制作备份表的工作和试验。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top