Макросы в SQL Server Management Studio

Есть ли способ реализовать макросы редактирования текста в SSMS? Я бы, например, хотели бы преобразовать код, как показано ниже, но нажатием клавиши, а не долгим поиском и заменой регулярного выражения.

Этот:

INSERT INTO [TABLE]
           ([fieldOne]
           ,[fieldTwo])
     VALUES
           (<fieldOne, datetime,>
           ,<fieldTwo, real(24,0))

Должно стать это:

INSERT INTO [TABLE]
           ([fieldOne]
           ,[fieldTwo])
     VALUES
           (@fieldOne
           ,@fieldTwo)

Я знаю, что SSMS изначально не поддерживает это, но я также знаю, что он расширяемый, если не документирован, и также есть место для полностью внешнего приложения, которое будет принимать скопированный текст, преобразовывать его и вставлять обратно без необходимости открывать редактор, вставьте, отредактируйте, скопируйте и вставьте обратно в SSMS.

Редактирование сохраненных шаблонов не является вариантом, поскольку эти шаблоны генерируются динамически, и использование Ctrl + Shift + M также не является вариантом, поскольку мне все равно нужно вводить имя каждого параметра, но без удобства копирования и вставки в запрос редактор.

Решения SSMS нет! Я ищу какое-то внешнее вуду, которое может мне в этом помочь.


person ProfK    schedule 15.03.2009    source источник


Ответы (6)


Как насчет скрипта AutoHotKey?

В зависимости от сложности ваших шаблонов вы можете либо

  1. используйте AutoHotKey для воспроизведения нажатий клавиш, необходимых для поиска и замены регулярного выражения, или
  2. скопируйте шаблон в буфер обмена и управляйте им непосредственно в AutoHotKey, прежде чем вставлять обратно.

Я уверен, что первый вариант подойдет. Второй не пробовал.

Этот вопрос указывает, как можно написать сценарий AutoHotKey для прослушивания аккордов клавиатуры.

person Ed Harper    schedule 16.03.2009

Если вы используете SSMS 2005 и более поздних версий, в нем есть встроенная поддержка шаблонов. Это не совсем полноценный макрос, но тем не менее он все еще довольно полезен.

Синтаксис в точности такой, как вы показали в первом фрагменте кода, и вы просто нажимаете Ctrl + Shift + M, чтобы вызвать диалоговое окно, предлагающее ввести значения в ваши биты, заключенные в угловые скобки.

SQL-сервер сгенерирует сценарий в этом формате, если вы щелкните правой кнопкой мыши по таблице и выберите «Таблица сценариев как», а затем выберите вариант вставки, обновления или удаления.

Вы также можете создать свои собственные шаблоны или изменить один из существующих встроенных (нажмите «Просмотр» -> «Проводник шаблонов», чтобы получить доступ к другим встроенным шаблонам).

В MSDN есть короткая статья, в которой объясняется, как начать работу с шаблонами. .

person KevB    schedule 15.03.2009

Искал что-то другое, но нашел этот вопрос. Если вы все еще что-то ищете, попробуйте пакет инструментов SSMS: http://www.ssmstoolspack.com/ It есть макросы и куча других интересных вещей. И это бесплатно!

person ShadyRudy    schedule 12.01.2011
comment
SSMS Tools Pack - отличная надстройка, но я не думаю, что в ней есть макросы. - person onedaywhen; 28.02.2013
comment
Как предупреждение, это больше не является бесплатным для SSMS 2012 и более поздних версий. - person ShawnFumo; 12.01.2016

Для SSMS 2016 вы можете использовать мое расширение Visual Commander. Он поддерживает запись / воспроизведение макросов и пользовательские команды C # / VB для манипуляций с текстом редактора.

person Sergey Vlasov    schedule 28.08.2016
comment
Спасибо, я посмотрю, и я уверен, что в какой-то момент это окажется полезным, но мне редко нужен макрос в Visual Studio, на который, похоже, ориентирован ваш продукт. Я искал макросы для SQL Server Management Studio. - person ProfK; 28.08.2016
comment
@ProfK Да, Visual Commander изначально разрабатывался для VS, но в недавнем выпуске добавлена ​​поддержка SSMS 2016 visualstudioextensions.vlasovstudio.com/2016/08/26/ - person Sergey Vlasov; 28.08.2016
comment
Ой, молодец. Устанавливаю сейчас. - person ProfK; 29.08.2016
comment
О нет. Он не установится; в файле журнала говорится, что этот формат манифеста VSIX не поддерживается. Тогда VSIXInstaller.NoApplicableSKUsException: это расширение не может быть установлено ни на каких установленных в настоящее время продуктах. У меня есть SSMS 13.0.15000.23, но доступно обновление. Может мне нужно обновление. - person ProfK; 29.08.2016
comment
@ProfK Спасибо, что сообщили об этой проблеме. Оказывается, SSMS June 2016 действительно дает эту ошибку. Вам необходимо обновить версию до июля или августа. - person Sergey Vlasov; 29.08.2016

Первый код - это шаблон из старого доброго анализатора запросов MS. Ярлык для заливки - Ctrl + M (но я не уверен, может быть, это Ctrl + Shift + M).

Такая же функция должна быть и в более новой SSMS.

person DiGi    schedule 15.03.2009
comment
Это мне не помогает. С таким же успехом я мог бы вручную отредактировать сценарий. - person ProfK; 15.03.2009

Обычно я копирую код в другой редактор (Notepad ++ или редактор Delphi / RAD Studio), делаю свои макросы, а затем вставляю его обратно в SSMS.

person Reversed Engineer    schedule 29.10.2014