Як я можу запустити лише оператор, на якому знаходиться курсор, у SQL Server Management Studio?


93

Як давно 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, і я вражений, я справді мав би зробити це втомливе рішення, навіть зараз. Будь-яке недавнє рішення, можливо?
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
Привіт samp! Я переробляю інструмент для SSMS2014. Повідомте вас, коли будете готові.
Станіслав Стоянов

1
@ st.stoqnov - Я хотів би використовувати цей аддін, але у нас працює SSMS 2013. Коли ви плануєте підтримати цю версію? Дякую
Namford

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

2 - Завантажте драйвер jTDS

3 - Дотримуйтесь цих інструкцій, щоб додати цей драйвер до SQL Developer

4 - Підключіться до SQL Server за допомогою SQL Developer (круто!)

5 - Запусти його, і життя добре


3
Я не впевнений, як це можна вважати відповіддю, оскільки всі вони засновані на інструментах Oracle. Питання було пов’язане із ССУП
Жак

2
DBeaver також дозволяє цей запит між; ; виконання. І це набагато більше потужності, ніж розробник SQL
Діма Фомін

@Jacques Однорядкове виконання - це одна функція, яку Oracle отримав правильно, а Microsoft - ні. Все інше SQL Developer є подпарітета, але він робить інтеграцію з серверами MS SQL.
jpaugh

@Jacques, оскільки це непросто зробити в SSMS, я радий, що є така відповідь, і для мене ця видається найкращою (зазвичай мої запити не є однокласними, я не вважаю за краще писати складні запити в один рядок лише для того, щоб CTRL + KU працювали ...)
Бетліста

9

Хтось запропонував ці можливості на Devart dbForge SQL Complete (аддон для Management Studio), і це все ще на стадії розробки. Будемо сподіватися, що це закінчено і не буде залишено на півдорозі розвитку.


2
Я щойно встановив безкоштовну версію для Sqlserver14 (?), І вона, здається, працює. [Сторінка Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos,

Я використовував його дотепер .... тепер він показує додавання кожного разу, коли я запускаю візуальну студію.
PAS

6

Примітка: Як не дивно, але навіть безкоштовна Toad для SQL Server не дозволяє запускати лише оператор під курсором.

Дійсно дратує те, що TOAD не дотримується того, що обіцяє:

З довідки TOAD: [F9 виконати] частину виписки, яка може містити один або кілька виразів. Ви можете вибрати частину виписки, розмістивши курсор у виписці або поруч із нею, або вибравши виписку. Примітка: Жаба вважає "сусідніми" всі висловлювання (включаючи коментарі), відокремлені від курсору або один від одного менш ніж двома порожніми рядками. Якщо під час виконання оператора виникає помилка, відображається повідомлення про помилку, що дозволяє або проігнорувати помилку, і продовжити, або скасувати виконання.

Я пробував це мільйон разів, але він просто виконує весь сценарій. Я хотів шукати його в групі підтримки користувачів (toadss (at) yahoogroups.com), але yahoo має найдурніший пошук! Він навіть не може знайти ключового слова "жаба" у групі поштових жаб, DOH!

Я думаю, TOAD - найкращий інструмент запитів за весь час, але відсутність цієї функції насправді дратує і мене.

ОНОВЛЕННЯ: РІШЕННЯ ЗНАЙДЕНО! Я запитав це питання в групі поштових повідомлень і отримав відповідь. На відміну від Oracle, вам слід відокремлювати оператори в SQL Server з ключовим словом GO після кожного оператора. Тільки якщо ви зробите, що кнопка F9 працює належним чином, виконуючи поточний оператор.


6

Відповідь вище допомогла мені створити ярлик для виконання поточного виписки без вибору запиту

1 - Клацніть на Інструменти > Параметри > Навколишнє середовище > Клавіатура

2 - Для команд "Показати", що містять, встановіть для нього значення SqlComplete10.Common_ExecuteCurrentStatement

3 - Для Використовувати новий ярлик у, встановіть його на SQL Query Editor

4 - Для натискання клавіш швидкого доступу (бажана комбінація клавіш) виконайте комбінацію Ctrl-Enter.

5 - Клацніть на Призначити . Натисніть OK.


Це робить трюк, але спочатку мені довелося видалити ярлик з іншої команди, інакше він просто не працював би.
січня

Як ти це зробив? Коли я дотримуюся наведених вище інструкцій, ctl-enter просто виділяє рядок (зверніть увагу, мої запити знаходяться на декількох рядках).
користувач441521

Здається застарілим.
Алі Карача

@Matt Я щось знайшов, коли шукав "Виконати", а саме Tools.ExecuteStatement, яке працює лише тоді, коли я зміню його ярлик на Глобальний.
jpaugh

@Matt Nope! Виявляється, це було додано цим плагіном , який нарешті запрацював.
jpaugh

4

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


7
Це тотальний біль у попі. Чому редактор SQL повинен змусити мене коментувати все, що я не хочу? Чи можу я не просто позитивно сказати "запустити цю одну команду", не хапаючи мишку і не натискаючи "Shift + Up" 35 разів?
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
Однак це не вибере весь поточний (багаторядковий) блок.
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

Попадання Ctrl- Eпід час виділення тексту.


9
Гаразд, але мені все одно доведеться вручну виділяти те, що я хочу. Моя справжня мета - мати можливість ввести оператор, а потім натиснути якусь клавішу, яка буде виконувати лише те, що знаходиться під курсором.
JosephStyons

7
для мене F5 легше вдарити, тоді як текст виділено, а потім "CTRL-E".
КМ.

1

Випуск SQL Complete Express має це вбудоване. Але ви не отримуєте його без спеціального intellisense.

(Я отримав це з допису Salamander2007)


3
Не кажучи нам, як це зробити, це не дуже корисно
G-.

1

Якщо рішення надбудови-виконавця (у верхній розміщеній відповіді) не працює належним чином, я змусив його працювати для мене (SSMS v17.8.1): Додаток додає команду під Інструменти: Інструменти> Виконати внутрішню заяву .

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


1

Ця функція присутня в SSMSBoost надбудові для SSMS (я розробник цієї надбудови):

Shift-F5 вибере поточний оператор (який дозволяє переглянути те, що ви збираєтеся виконати). Потім ти натискаєш F5 і виконуєш його.


0

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


Насправді це не допоможе. SQLCMD не надсилатиме команду на SQL Server, поки пакет не закінчиться. (Зазвичай позначається GO.)
Шеннон Северанс

0

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


2
З запитання: Щоб запустити лише поточний вираз, я повинен вручну виділити потрібний вираз, а потім натиснути F5.
Пол Маккарті

1
як би, просто вийдіть з машини і поверніть передні шини, щоб вказувати у напрямку, куди ви хочете, і натиснути на акселератор ....
pcnate

0

Ви можете поєднати два інструменти наступним чином: SQL Complete із dbForce та AuhotHotkey.

За допомогою SQL Complete: ви можете виконати поточний оператор біля курсору, натиснувши комбінацію Ctrl Shift E

Причиною того, що я використав AutoHotkey, є полегшення життя :-) за допомогою просто F6 для виконання поточного оператора, встановивши наступний код у сценарії AutoHotkey:

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

І voilà, ви можете виконати будь-який поточний оператор біля курсору, просто натиснувши F6

Але іноді, знову моя велика проблема полягає в тому, що я помилково натискаю F5 замість F6: D


0

Розширення SQL Prompt від Redgate для SSMS може це зробити.

Це не безкоштовно, але на моєму досвіді це варто мати. Краще intellisense, ніж стандартна версія SSMS, забарвлення вкладок, історія вкладок (настільки цінна!), Фрагменти, виконання одного висловлювання (а не лише одного рядка) та багато іншого.


0

Щоб запустити лише розділ більшого сценарію, спробуйте це ..

Кроки:

  1. Згорніть оператор SQL, який потрібно запустити, клацнувши знак мінус у лівому полі поруч із оператором. Це буде відображати лише перший рядок (з крапкою "...", щоб вказати більше коду, що не відображається) і закінчення ";" для заяви.

  2. Виділіть рядок.

  3. Натисніть клавішу [F5].

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


0

Найпростіший спосіб зробити це - призначення для CTRL+ Enterкомбінації для дії Query.Execute у 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

Спробуйте визначити макрос у SSMSBoost SSMSBoost / Settings / Macros:

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


-1

Для мене працює наступне ... Я використовую SSMS 2012

1 - Клацніть на Інструменти> Параметри> Клавіатура середовища

2 - Для команд Показати, що містять , встановіть для Query.Execute

3 - Для Використовувати новий ярлик у , встановіть його на SQL Query Editor

4 - Для Натисніть клавіші швидкого доступу виконайте комбінацію Ctrl-Enter.

5 - Клацніть на Призначити. Натисніть OK.


Це робить весь сценарій - я просто хочу вираз під курсором.
JosephStyons

Правильно, вибачте, я неправильно зрозумів питання.
BGA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.