Macros in SQL Server Management Studio

2020-06-01 05:18发布

Is there any way to implement text editing macros in SSMS? I would, e.g. like to convert the the code as shown below, but with a key-press, not a long-winded regex search and replace.

This:

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

Must become this:

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

I know SSMS doesn't natively support this, but I also know that it is extensible, if undocumented, and there is also room for a totally external application that will take copied text, transform it, and paste it back, without having to open an editor, paste, edit, copy, and paste back to SSMS.

Editing the stored templates is not an option, as these templates are dynamically generated, and using Ctrl+Shift+M is not an option either, as I still have to type each parameter name, but without the convenience of copying and pasting in the query editor.

There is no SSMS solution! I am looking for some sort of external voodoo that can help me do this.

6条回答
ら.Afraid
2楼-- · 2020-06-01 05:28

What about an AutoHotKey script?

Depending on the complexity of your templates, you could either

  1. use AutoHotKey to play back the keystrokes needed for the regex search and replace, or
  2. copy the template to the clipboard and manipulate it directly within AutoHotKey before pasting it back.

I'm sure the first option will work. I've not tried the second.

This question gives an indication of how an AutoHotKey script can be written to listen for keyboard chords.

查看更多
可以哭但决不认输i
3楼-- · 2020-06-01 05:38

For SSMS 2016 you can use my Visual Commander extension. It supports macros recording/playback and custom C#/VB commands for editor text manipulations.

查看更多
一夜七次
4楼-- · 2020-06-01 05:40

Was looking for something else, but found this question. If you're still looking for something, try SSMS toolpack: http://www.ssmstoolspack.com/ It has macros and a bunch of other neat things. And it's free!

查看更多
放荡不羁爱自由
5楼-- · 2020-06-01 05:49

I usually copy the code into another editor (Notepad++, or Delphi /RAD Studio editor), do my macro stuff, and then paste it back into SSMS.

查看更多
forever°为你锁心
6楼-- · 2020-06-01 05:51

First code is template from old-good MS Query Analyzer. Shortcut to filling is Ctrl+M (but I'm not sure, maybe it is Ctrl+Shift+M).

There should be same feature in newer SSMS.

查看更多
可以哭但决不认输i
7楼-- · 2020-06-01 05:52

If you are using SSMS 2005 upwards it has in built support for templates. It isn't exactly full blown macro's, but non the less it is still pretty useful.

The syntax is exactly as you have shown in your first code snippet and you simply press Ctrl+Shift+M to bring up a dialog box that prompts you for the values to go into your bits enclosed in angle brackets.

SQL server generates script in this format if you right click on a table and select "Script Table as" then pick either the insert, update or delete option.

You can also create your own custom templates, or modify one of the existing built in ones (click on View -> Template explorer to get access to the other inbuilt templates).

There is a short article on MSDN that explains how to get started with templates.

查看更多
登录 后发表回答