如何仅在SQL Server Management Studio中运行光标所在的语句?


93

作为Oracle蟾蜍的老用户,我已经习惯于按Ctrl + Enter并只执行光标下的语句。

在SQL Server Management Studio中,按F5键将运行整个脚本。要仅运行当前语句,我必须手动突出显示所需的语句,然后单击F5。

这真让我讨厌。有人知道带有键盘快捷键的工具可以在SQL Server上仅运行当前语句吗?我将仅为此一项功能更改工具。

注意:奇怪的是,甚至免费的Toad for SQL Server也不允许您仅在游标下运行该语句。


2
请注意:在TOAD中,F9键运行当前语句组。通过使用“ go”关键字来分隔组(也由“ ercan”回答)。
crokusek 2012年

F9仅在更高版本的TOAD(v6.6 ++)中运行当前语句。语句可以选择用分号分隔。即使没有分号,它也能够知道语句的结尾,因此95%值得信赖。
crokusek

1
十年后,这仍然是一个问题。刚来自SQL Developer的我感到非常震惊,即使现在我仍然应该为此做一个乏味的解决方法。最近有什么解决办法吗?
MattSom

1
我希望@MattSom!
JosephStyons

Answers:


37

您可以检出此SSMS 2012加载项。将光标置于要执行的语句中,然后按CTRL+ SHIFT+E

SSMS执行器-https://github.com/devvcat/ssms-executor/releases

更新:
项目移至github并重新编写了插件,以支持SSMS 2014,SSMS2016。(以前,该项目位于Codeplex的SSMS Executor上-http: //ssmsexecutor.codeplex.com/。)


2
这对我在SSMS2012中确实非常有效,但是现在我正在运行SSMS2014,我真的很想念它!有人知道SSMS2014解决方案吗?
2015年

3
SAMP我返工的SSMS2014工具。准备好时会通知您。
斯坦尼斯拉夫·斯托亚诺夫

1
@ st.stoqnov-我很想使用此插件,但我们正在运行SSMS2013。您打算何时支持此版本?谢谢
纳姆福德2015年

1
@namford,您好:该项目已移至github,并且重写了该插件以支持SSMS 2014/2016。
斯坦尼斯拉夫·斯托亚诺夫

1
@StanislavStoyanov请编辑问题以提及您是您推荐的项目的作者。
jpaugh

34

使用Ctrl+ KU选择一行。然后使用F5运行它。

尽管它仅适用于单行选择,但我仍然发现它非常有用。

希望能帮助到你!!


1
嘿,这很方便,只需要一支班轮。谢谢
JosephStyons

或与CTRL E
休·希格雷夫斯

CTRL-E在SSMS 18.5
亚历山大

20

好的,我从所有这些答案中得到的是“不,那是不可能的”。

编辑:

这是我能够执行此操作的方式:

1-下载SQL Developer

2-下载jTDS驱动程序

3-按照以下说明将驱动程序添加到SQL Developer

4-使用SQL Developer连接到SQL Server(很酷!)

5-运行它,生活就很好


3
我不确定如何将其视为答案,因为这些都基于Oracle工具。该问题与SSMS有关
Jacques

2
DBeaver也允许此查询之间;; 执行。而且它的功能比SQL Developer
Dima Fomin

@Jacques单行执行是Oracle正确的单一功能,而Microsoft没有。关于SQL Developer的所有其他信息均低于标准,但它确实与MS SQL服务器集成。
jpaugh

@Jacques,因为在SSMS中很难做到这一点,我很高兴有这个答案,而对于我来说,这似乎是最好的(通常我的查询不是单行的,我不喜欢在其中编写复杂的查询一行只是为了使CTRL + KU起作用...)
Betlista


6

注意:奇怪的是,甚至免费的Toad for SQL Server也不允许您仅在游标下运行该语句。

确实令人讨厌的是,TOAD没有遵守承诺:

在TOAD帮助中:[F9执行]语句的一部分,可以包含一个或多个语句。您可以通过将光标放在语句内或语句附近或选择语句来选择语句的一部分。注意:Toad认为与光标或彼此之间少于两个空行的所有语句(包括注释)“相邻”。如果在语句执行期间发生错误,则会显示一条错误消息,使您可以忽略该错误并继续执行或中止执行。

我尝试了百万次,但它只是执行整个脚本。我想在用户支持小组(toadss(at)yahoogroups.com)中进行搜索,但是yahoo有史以来最愚蠢的搜索工具!它甚至在蟾蜍邮件组DOH中找不到关键字“蟾蜍”!

我认为TOAD是有史以来最好的查询工具,但是缺少此功能确实让我很烦。

更新:解决方案! 我在蟾蜍邮件组中问了这个问题,并得到了答案。与Oracle不同,您必须在SQL Server中的每个语句之后用关键字GO分隔语句。仅当您执行F9按钮可以按预期工作时,才执行当前语句。


6

上面的答案帮助我创建了执行当前语句的快捷方式,而无需选择查询

1-单击工具 > 选项 > 环境 > 键盘

2-对于包含的Show命令,请将其设置为SqlComplete10.Common_ExecuteCurrentStatement

3-对于“使用新的快捷方式”,将其设置为“ SQL查询编辑器”

4-对于按快捷键(所需的快捷键),请执行Ctrl-Enter组合键。

5-单击分配。单击确定。


这可以解决问题,但是我必须先从另一个命令中删除快捷方式,否则它将根本无法工作。

你是怎么做到的?当我按照上面的说明进行操作时,ctl-enter仅突出显示该行(请注意我的查询在多行中)。
user441521

似乎已经过时了。
阿里·卡拉卡

@Matt我在搜索“ Execute”时确实找到了一些东西,即,Tools.ExecuteStatement仅在将其快捷方式更改为Global时才起作用。
jpaugh

@Matt Nope!原来,这是由此插件添加的,它终于开始工作了。
jpaugh

4

我使用一种解决方法:我在评论未使用的查询。您可以使用CTRL-K,CTRL-C注释突出显示的SQL。使用CTRL-K,CTRL-U取消注释。这样,您可以注释所有其他查询,并使用F5执行您感兴趣的查询。


7
这是臀部的全部痛苦。为什么要使用SQL编辑器让我注释掉所有不需要的内容?我不能只抓住鼠标或按35次“ Shift + Up”来肯定地声明“运行此命令”吗?
JosephStyons

3
只是为了澄清,谢谢您的回答;我很感激。我真的只是在牢记SQL Server Mgmt Studio界面。
JosephStyons

1
如果您找到更好的方法,请确保将其发布在这里:)
Andomar

4

我用了这个工作。当代码未注释掉时

Ctrl + K + U

(此命令突出显示当前查询行),然后

Ctrl + E

(此运行突出显示的查询)。

当您想在其他一些行之间运行单行查询时,此功能很有用:

  Select top 100 * from [dbo].[Order]

  Select top 100 * from [dbo].[OrderItem]

  Select top 100 * from [dbo].[OrderStatus]

3

我认为仅使用管理工作室是不可能做到的。但是您可以使用键盘快捷方式软件(例如http://www.autohotkey.com/)来记录特殊序列并将其分配给热键。在您的情况下,您需要:

<home><shift-end><F5>

这将选择当前行并执行它。


8
但是,这不会选择整个当前(多行)块。
2011年

2

在Toad for SQL Server中,可以使用以下默认热键执行:

  • F5:在编辑器中执行所有SQL语句
  • F9:在当前光标位置执行SQL语句
  • Shift-F9:从光标执行所有SQL语句,包括光标位置处的当前语句

但是,就像“ ercan”所写的那样,您需要用“ GO”分隔/跟随每个语句。

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

SELECT TOP 5 * FROM contracts
GO

1

如果必须将手移到困扰您的鼠标部分,则可以在按住Ctrl键的同时按下向上或向下箭头键一次选择一行。


6
你是说Shift,是吗?这对于较大的声明来说是乏味的。谢谢你的主意。
JosephStyons

1

点击Ctrl- E突出显示文本。


9
好的,但是我仍然必须手动突出显示我想要的内容。我的真正目标是能够键入一条语句,然后按下某个键,该键将执行光标下面的内容。
JosephStyons

7
对我来说,在突出显示文本和然后按“ CTRL-E”的同时,更容易按F5键。
KM。

1

SQL Complete Express版本具有此内置功能。但是,如果没有自定义intellisense,您将无法获得它。

(我从Salamander2007的帖子中获得了此信息)


3
不告诉我们如何做,这不是很有用
G-。

1

如果执行程序附加解决方案(在顶部发布的答案中)无法正常运行,我可以为我工作(SSMS v17.8.1):附加项在工具下添加了一个命令:工具>执行内部语句

您可以通过以下方法为其分配自定义键盘快捷键:转到“ 工具”>“选项”>“键盘”,然后在“显示包含以下内容的命令”中搜索“执行”,然后选择Tools.ExecuteInnerStatement。然后,只需在“按快捷键:”字段中分配所需的击键,然后单击“分配”按钮即可。


1

此功能存在于SSMS的SSMSBoost加载项中(我是此加载项的开发者):

Shift-F5键将选择当前语句(允许您查看当前要执行的语句)。然后按F5并执行它。


0

您可以始终使用命令行工具sqlcmd和osql。在unix命令行上,我使用了包装函数将sybase全部传递给等效命令(我认为这是isql?),因此在Unix命令行上做了很多sybase。我曾经使用过vi,所以那时也许我只是疯了;-)


其实那无济于事。在批处理结束之前,SQLCMD不会将命令发送到SQL Server。(通常以GO表示。)
Shannon Severance,2009年

0

只需选择(突出显示)要运行的单个语句,然后按F5。


2
在问题中:仅运行当前语句,我必须手动突出显示所需的语句,然后单击F5。
Paul McCarthy

1
有点像,只是下车,然后转动前轮胎,指向要行驶的方向,然后
踩油门...。– pcnate

0

您可以按以下方式组合这两个工具:来自dbForce的SQL Complete和AuhotHotkey。

使用SQL Complete:您可以通过按Ctrl Shift E组合键在光标处执行当前语句

我使用AutoHotkey的原因是为了使生活更轻松:-)通过仅使用F6来执行当前语句,并在AutoHotkey脚本中设置以下代码即可:

;SQL EXECUTE THE CURRENT STATEMENT
F6::
Send ^+E
return

而且,只需按F6键,您就可以在光标处执行任何当前语句

但是有时候,我的大问题还是我误按了F5而不是F6:D


0

Redgate的SSMS SQL提示扩展可以做到这一点。

它不是免费的,但是根据我的经验,值得拥有。比SSMS开箱即用的版本,选项卡颜色,选项卡历史记录(非常有价值!),摘要,单条语句(不仅仅是一行)执行的智能感知能力强得多。


0

要仅运行较大脚本的一部分,请尝试此..

脚步:

  1. 通过单击语句旁边左空白处的减号来折叠要运行的SQL语句。那只会显示第一行(用省略号“ ...”表示未显示更多代码)和结尾“;”。为声明。

  2. 突出显示该行。

  3. 按[F5]键。

那将只运行突出显示的语句。如果要一次运行多个语句,请折叠每个语句并突出显示所有要运行的语句,然后单击[F5]。这是一种变通方法,但是比每次都必须拖动并突出显示多行代码要容易得多。


0

最简单的方法是为Query.Execute中的CTRL+ Enter组合赋值。SQL Server Management Studio

  1. 打开Tools > Options菜单。
  2. Environment > Keyboard在左窗格中选择页面。
  3. 查找Query.Execute动作并选择它。
  4. SQL Query Editor"Use new shortcut in:"下拉列表中设置。
  5. 现在CTRL + Enterpress shortcut keys:文本框中输入组合。
  6. 点击Assign按钮。
  7. 更改Shortcut currently used by:Query.Execute (Ctrl+Enter (SQL Query Editor))
  8. 点击OKDone

要仅执行当前行,请使用Shift + Home选择该行的所有行,然后执行Ctrl + Enter。
阿卜杜拉·伊尔加兹

0

尝试在SSMSBoost SSMSBoost / Settings / Macros中定义宏:

在右侧面板填充标题中为宏选择可用的插槽(如果需要),添加2条命令进行排序:SSMSBoost.SelectCurrentStatement Query.Execute为您分配自己喜欢的快捷方式,仅此而已。


-1

以下为我工作的作品...我使用SSMS 2012

1-单击工具>选项>环境键盘

2-对于包含的Show命令,将其设置为Query.Execute。

3-对于中的使用新快捷方式,将其设置为SQL查询编辑器

4-对于“ 按”快捷键,执行Ctrl-Enter组合键。

5-单击分配。单击确定。


这样就完成了整个脚本-我只想将语句放在光标下。
JosephStyons

对,对不起,我误解了这个问题。
BGA
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.