Как я могу запустить только оператор, на котором установлен мой курсор, в SQL Server Management Studio?

98

Как давний пользователь Toad для Oracle, я привык нажимать Ctrl + Enter и выполнять только оператор под курсором.

В SQL Server Management Studio нажатие клавиши F5 запускает весь сценарий. Чтобы запустить только текущий оператор, мне нужно вручную выделить нужный оператор, а затем нажать F5.

Меня это действительно раздражает. Кто-нибудь знает инструмент с сочетанием клавиш для запуска только текущего оператора на SQL Server? Я бы поменял инструменты только для этой одной функции.

Примечание. Как ни странно, даже бесплатная версия Toad для SQL Server не позволяет запускать только оператор под курсором.

ДжозефСтайонс
источник
2
Примечание к вашему примечанию: в TOAD клавиша F9 запускает текущую группу операторов. Группы разделяются с помощью ключевого слова "go" (также отвечает "ercan").
crokusek
F9 запускает только текущий оператор в более поздних версиях TOAD (v6.6 ++). Заявления необязательно разделяются точкой с запятой. На 95% можно доверять, если вы знаете, где заканчивается оператор, даже если нет точки с запятой.
crokusek
1
Спустя десять лет это все еще проблема. Я только что пришел из SQL Developer, и я шокирован, что даже сейчас мне действительно нужно найти утомительный обходной путь. Возможно, какое-нибудь недавнее решение?
MattSom
1
@MattSom Желаю!
JosephStyons

Ответы:

37

Вы можете проверить эту надстройку для SSMS 2012. Поместите курсор в оператор, который хотите выполнить, и нажмите CTRL+ SHIFT+E

Исполнитель SSMS - https://github.com/devvcat/ssms-executor/releases

Обновление:
проект перемещен на github, а надстройка переписана для поддержки SSMS 2014, SSMS 2016. (Раньше проект жил на codeplex, в SSMS Executor - http://ssmsexecutor.codeplex.com/ .)

Станислав Стоянов
источник
2
У меня это очень хорошо сработало в SSMS2012, но теперь я использую SSMS2014, и мне это очень не хватает! Кто-нибудь знает решение SSMS2014?
samp
3
Привет, самп, я переделываю инструмент для SSMS2014. Сообщу вам, когда будете готовы.
Станислав Стоянов
1
@ st.stoqnov - я бы хотел использовать это дополнение, но мы работаем с SSMS 2013. Когда вы планируете поддерживать эту версию? Спасибо
namford
1
Привет, @namford, проект был перемещен на github, а надстройка переписана для поддержки SSMS 2014/2016.
Станислав Стоянов
1
@StanislavStoyanov Пожалуйста, отредактируйте вопрос, чтобы указать, что вы являетесь автором проекта, который рекомендуете.
jpaugh
35

Используйте Ctrl+, KUчтобы выбрать строку. Затем используйте F5для его запуска.

Хотя он работает только для выделения одной строки, я все же считаю его весьма полезным.

Надеюсь, это поможет!!

пыли
источник
2
Эй, это удобно, для одного лайнера. Спасибо
JosephStyons
Или это и CTRL E
Хью Сигрейвс
CTRL-E выполнил весь скрипт в файле в SSMS 18.5
Александр
21

Хорошо, из всех этих ответов я получаю: «Нет, это невозможно».

Редактировать:

Вот как мне это удалось:

1 - Загрузить SQL Developer

2 - Загрузите драйвер jTDS

3 - Следуйте этим инструкциям, чтобы добавить этот драйвер в SQL Developer.

4 - Подключитесь к SQL Server с помощью SQL Developer (круто!)

5 - Беги, и жизнь прекрасна

ДжозефСтайонс
источник
3
Я не уверен, как это можно считать ответом, потому что все они основаны на инструментах Oracle. Вопрос был связан с SSMS
Жак
2
DBeaver также разрешает этот запрос между; ; исполнение. И он намного мощнее, чем SQL Developer
Дима Фомин
@Jacques Однострочное выполнение - единственная функция, которую Oracle правильно поняла, а Microsoft - нет. Все остальное SQL Developer является подпаритет, но он делает интеграцию с серверами MS SQL.
jpaugh
@Jacques, так как это нелегко заставить работать в SSMS, я рад, что есть этот ответ, и для меня он кажется лучшим (обычно мои запросы не однострочные, я не предпочитаю писать сложные запросы в одна строка, чтобы заставить CTRL + KU работать ...)
Betlista 03
Фактически вы можете использовать SQL Developer для выполнения запросов MSSQL-Server. Я не думаю, что это хорошая идея, однако позор вам, Microsoft, за такой плохой пользовательский опыт.
Герфрид
9

Кто-то предложил эту функцию на Devart dbForge SQL Complete (надстройка для Management Studio), и она все еще находится в стадии разработки. Будем надеяться, что он закончен и его не бросят на полпути.

Саламандра 2007
источник
2
Я только что установил бесплатную версию для Sqlserver14 (?), И, похоже, она работает. [Страница Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos
Я использовал его до сих пор .... теперь он показывает добавление каждый раз, когда я запускаю визуальную студию.
Пассажирский
6

Примечание. Как ни странно, даже бесплатная версия Toad для SQL Server не позволяет запускать только оператор под курсором.

Действительно раздражает, что TOAD не выполняет своих обещаний:

Из справки TOAD: [F9 для выполнения] часть оператора, которая может содержать один или несколько операторов. Вы можете выбрать часть инструкции, поместив курсор внутри инструкции или рядом с ней, или выбрав инструкцию. Примечание. Жаба считает «смежными» все операторы (включая комментарии), отделенные от курсора или друг от друга менее чем двумя пустыми строками. Если во время выполнения оператора возникает ошибка, отображается сообщение об ошибке, позволяющее либо игнорировать ошибку и продолжить, либо прервать выполнение.

Я пробовал миллион раз, но он просто выполняет весь сценарий. Я хотел найти его в группе поддержки пользователей (toadss (at) yahoogroups.com), но у yahoo самая дурацкая поисковая система! Он даже не может найти ключевое слово «жаба» в почтовой группе «жаба», DOH!

Я думаю, что TOAD - лучший инструмент для запросов, но отсутствие этой функции меня тоже очень раздражает.

ОБНОВЛЕНИЕ: РЕШЕНИЕ НАЙДЕНО! Я задал этот вопрос в почтовой группе toadss и получил ответ. В отличие от Oracle, вы должны разделять операторы в SQL Server ключевым словом GO после каждого оператора. Только если вы сделаете это, кнопка F9 будет работать должным образом, выполняя текущий оператор.

Эркан
источник
6

Приведенный выше ответ помог мне создать ярлык для выполнения текущего оператора без выбора запроса

1 - Нажмите Инструменты > Параметры > Среда > Клавиатура.

2 - Для отображения команд, содержащих, установите для него значение отображения, SqlComplete10.Common_ExecuteCurrentStatement

3 - Для использования нового ярлыка в установите для него значение Редактор запросов SQL.

4 - Для Нажмите сочетания клавиш (желаемое сочетание клавиш) выполните комбинацию Ctrl-Enter.

5 - Нажмите « Назначить» . Щелкните ОК.

Галла Баладжи
источник
Это помогает, но сначала мне пришлось удалить ярлык из другой команды, иначе это просто не сработало бы.
января
Как ты это сделал? Когда я следую приведенным выше инструкциям, ctl-enter просто выделяет строку (обратите внимание, что мои запросы состоят из нескольких строк).
user441521
Кажется устаревшим.
Али Караджа
@Matt Я нашел кое-что, когда искал "Execute", а именно Tools.ExecuteStatement, который работает только тогда, когда я изменяю его ярлык на Global.
jpaugh
@ Мэтт Нет! Оказывается, это было добавлено этим плагином , который наконец заработал.
jpaugh
5

Я использую обходной путь: я комментирую запросы, которые не использую. Вы можете использовать CTRL-K, CTRL-C, чтобы прокомментировать выделенный вами SQL. Используйте CTRL-K, CTRL-U, чтобы раскомментировать. Таким образом, вы можете прокомментировать все остальные запросы и выполнить интересующий вас запрос с помощью F5.

Андомар
источник
8
Это сплошная боль в заднице. Почему редактор SQL должен заставлять меня комментировать все, что мне не нужно? Могу ли я просто положительно заявить «выполнить одну эту команду», не хватаясь за мышь и не нажимая «Shift + Up» 35 раз?
JosephStyons
5
Просто чтобы уточнить, спасибо за ответ; Я ценю это. Я действительно просто хватаюсь за интерфейс SQL Server Mgmt Studio.
JosephStyons
2
Если найдете способ получше, обязательно разместите его здесь :)
Andomar
5

Я использовал эту работу; когда код не закомментирован

Ctrl + K + U

(эта команда выделяет текущую строку запроса), а затем

Ctrl + E

(этот запуск выделенный запрос).

Это полезно, когда вы хотите выполнить однострочный запрос между некоторыми другими строками, например:

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

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

  Select top 100 * from [dbo].[OrderStatus]
nzrytmn
источник
3

Я не думаю, что это возможно сделать, используя только студию менеджмента. НО вы можете использовать программное обеспечение для сочетания клавиш (например, http://www.autohotkey.com/ ), чтобы записать специальную последовательность и назначить ее для горячей клавиши. В вашем случае вам понадобится:

<home><shift-end><F5>

Это выберет текущую строку и выполнит ее.

ДмитрийК
источник
8
Однако при этом не будет выделен весь текущий (многострочный) блок.
tbone
2

В Toad для 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

Hit Ctrl- Eпока текст выделен.

Крис МакКолл
источник
9
Хорошо, но мне все равно нужно вручную выделить то, что я хочу. Моя настоящая цель - иметь возможность набрать оператор и затем нажать какую-нибудь клавишу, которая выполнит именно то, что находится под курсором.
JosephStyons
7
для меня F5 легче нажимать, когда текст выделен, а затем "CTRL-E".
КМ.
1

В выпуске SQL Complete Express это встроено. Но вы не получите этого без настраиваемого intellisense.

(Я получил это из сообщения Salamander2007)

Шорин
источник
3
Не говоря нам, как это сделать, это не очень полезно
G-.
1

Если решение надстройки исполнителя (в верхнем опубликованном ответе) не работает должным образом, я заставил его работать для меня (SSMS v17.8.1): надстройка добавляет команду в инструменты: Инструменты> Выполнить внутренний оператор .

Вы можете назначить ему настраиваемую комбинацию клавиш, перейдя в Инструменты> Параметры> Клавиатура, затем найдите «выполнить» в «Показать команды, содержащие:» и выбрав Tools.ExecuteInnerStatement . Затем просто назначьте желаемое сочетание клавиш в поле «Нажимайте сочетания клавиш:» и нажмите кнопку «Назначить».

inouttennis2314
источник
1

Эта функция присутствует в SSMSBoost надстройке для SSMS (я разработчик этой надстройки):

Shift-F5 выберет текущий оператор (что позволяет вам просмотреть, что вы собираетесь выполнить в данный момент). Затем вы нажимаете F5 и выполняете его.

Андрей Ранцевич
источник
1

Попробуйте определить макрос в SSMSBoost SSMSBoost / Settings / Macros:

Выберите свободный слот для вашего макроса в заголовке заливки правой панели (если хотите) добавьте 2 команды в последовательность: SSMSBoost.SelectCurrentStatement Query.Execute назначьте ваш любимый ярлык и все.

Герн
источник
0

вы всегда можете использовать инструменты командной строки sqlcmd и osql. Я сделал много sybase в командной строке unix, используя функцию-оболочку, которая передала мою командную строку в эквивалент (который, как мне кажется, был isql?). Я использовал vi, так что, может быть, тогда я был просто сумасшедшим ;-)

КМ.
источник
На самом деле это не поможет. SQLCMD не отправит команду на SQL Server, пока пакет не будет завершен. (Обычно обозначается с помощью GO.)
Шеннон Северанс,
0

Просто выберите (выделите) единственный оператор, который вы хотите запустить, и нажмите F5.

JE
источник
2
Из вопроса: чтобы запустить только текущий оператор, мне нужно вручную выделить нужный оператор, а затем нажать F5.
Пол Маккарти
1
вроде как, просто выйди из машины и поверни передние колеса, чтобы они указывали в том направлении, в котором ты хочешь ехать, и
нажми
0

Вы можете комбинировать эти два инструмента следующим образом: SQL Complete из dbForce и AuhotHotkey.

С SQL Complete: вы можете выполнить текущий оператор под курсором, нажав комбинацию Ctrl Shift E

Причина, по которой я использовал AutoHotkey, заключается в том, чтобы упростить жизнь :-), используя только F6 для выполнения текущего оператора, установив следующий код в скрипте AutoHotkey:

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

И вуаля, вы можете выполнить любой текущий оператор на курсоре, просто нажав F6

Но иногда, опять же, моя большая проблема в том, что я по ошибке нажимаю F5 вместо F6: D

Синий крест
источник
0

Расширение Redgate SQL Prompt для SSMS может это сделать.

Это не бесплатно, но, по моему опыту, оно того стоит. Лучше intellisense, чем стандартная версия SSMS, раскраска вкладок, история вкладок (так ценно!), Фрагменты, выполнение одного оператора (а не одной строки) и многое другое.

Мэтт Лакстон
источник
0

Чтобы запустить только часть более крупного скрипта, попробуйте это ..

Шаги:

  1. Сверните оператор SQL, который вы хотите выполнить, щелкнув знак минус в левом поле рядом с оператором. Будет показана только первая строка (с многоточием «...», чтобы указать, что код не показан) и окончание «;» для заявления.

  2. Выделите строку.

  3. Нажмите клавишу [F5].

Это запустит только выделенный оператор. Если вы хотите запускать более одного оператора за раз, сверните каждый оператор и выделите все, что вы хотите запустить, затем нажмите [F5]. Это обходной путь, но все же намного проще, чем каждый раз перетаскивать и выделять множество строк кода.

Тим Фаррар
источник
0

Самый простой способ сделать это - назначить комбинацию CTRL+ Enterдля действия Query.Execute in SQL Server Management Studio.

  1. открыто Tools > Options меню.
  2. Выбрать Environment > Keyboard страницу на левой панели.
  3. Найдите Query.Executeдействие и выберите его.
  4. Устанавливается SQL Query Editorв "Use new shortcut in:"раскрывающемся списке.
  5. Теперь введите CTRL + Enterкомбинацию в press shortcut keys:текстовое поле.
  6. Щелкните Assignкнопку.
  7. Изменить Shortcut currently used by:наQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Щелкните OK. Done.
Абдулла Ильгаз
источник
Чтобы выполнить только текущую строку, выделите всю строку до конца строки с помощью Shift + Home, затем выполните Ctrl + Enter.
Абдулла Ильгаз
0

Используйте Shift+ (стрелка вниз), чтобы выбрать одну строку, сохраните кнопку, чем Ctrl+KU : D lol.

Затем используйте F5 для его запуска.

Надеюсь, это тоже поможет ..

Brifeb
источник
-1

Для меня работает следующее ... Я использую SSMS 2012

1 - Нажмите Инструменты> Параметры> Клавиатура среды.

2 - Для отображения команд, содержащих , установите для него значение Query.Execute

3 - Для использования нового ярлыка установите его в Редактор запросов SQL.

4 - для клавиш быстрого доступа Ctrl-Enter.

5 - Нажмите «Назначить». Щелкните ОК.

BGA
источник
Это делает весь сценарий - мне просто нужен оператор под курсором.
JosephStyons
Хорошо, извините, я неправильно понял вопрос.
BGA