SSMSBoost add-in for SQL Server Management Studio v3.6.7072
SSMSBoost add-in for SQL Server Management Studio v3.6.7072
SSMSBoost enhances SQL Server Management Studio and adds features like export to excel, results grid search, sessions history, destructive DML guard and many other. The main goal of the project is to speed-up your daily tasks as DBA, SQL developer or data miner, additionally protecting you from occasional data or code loss. Shortly after the installation you will realize that plug-in saves you hundreds of mouse-clicks and key strokes every day !
SQL Server Management Studio versions supported: 2008, 2008/R2, 2012, 2014, 2016, 2017, 2018
Licensing options: after 30 day trial period register and get free community license or buy the professional version.
Versions comparison page gives you a short overview about the differences between both versions.
SSMSBoost was released to the public in 2012 and was adopted since then by more than 40 000 registered users from more than 15 000 companies around the world. Just to mention some of them:
Features, added by SSMSBoost to SQL Server Management Studio
Preferred connections: "remember" favorite servers/databases
If you have to deal with several servers on daily basis - this functionality is for you.
Preferred connections allow you to remember your favorite servers/databases and pre-configure several options. Connections can be managed in SSMSBoost Settings->Preferred connections
Following options can be defined:
Connection alias: sometimes server names are too long and are difficult to memorize, like "customerserver823127.hosteddomainsample.com". In this case you can define display name, like
customerserver823127.hosteddomainsample.com-> DEVELOPMENT
customerserver823555.hosteddomainsample.com-> PRODUCTION
Additional connection Parameters
can be specified and they will be remembered forever. (This is a known issue with SSMS, that connection parameters are not remembered)
define if SSMSBoost should connect object explorer on start-up
define if SSMSBoost should open empty script window on start-up
Custom status bar color. It will help you to distinguish between development (=green) and production databases (=red) quickly. If you define color for preferred connection, where no database is specified, this color will be applied whenever any database from that server is active.
SSMSBoost tracks connection changes and re-picks correct color on every change.
'Important DB Alert' helps you to protect your production environments: as soon as you change connection to the database that has this option turned on, a warning Tooltip will appear (text, color and position are customizable). You can use following replacement patterns: {@Server}, {@Database}, {@User}, \r, \n, \t.
Note, that Tooltip location can be defined under "Important DB Alerts" page in SSMSBoost Settings. Below you can see how does alert look like:
This feature can protect you from occasional data modifications in live environments and can actually save you time or even your job ! :)
You can quickly add database displayed in Object Explorer to preferred connections by right-clicking on it's node and selecting "Add to preferred connections"
Once you have defined the list of your preferred connections, they will be displayed in Quick connection switch drop-down on the toolbar, which allows you to switch connections instantly.
Quick Connection Switch
Quick Connection Switch drop-down on the toolbar combines 3 useful features originally missing in SSMS:
Quick connection switching in SSMS with SSMSBoost add-in
Allows switching between Preferred connections
Keeps track of recent connections
Shows all or ACCESSIBLE-only local databases
If SSMS starts with empty environment you can choose any connection from Quick Connection switch drop-down to create an empty document with appropriate connection.
You will find fine-tuning settings of quick connection switch drop-down under SSMSBoost Settings->Preferred Connections
Connection Coloring
Native Sql Server Management Studio connection dialog allows you to choose the color of the status bar, when initiating new connecting to the database, however, this color remains permanent even if your connection changes. SSMSBoost solves this problem: when adding Preferred Connection you can specify an appropriate color for SERVER or SERVER/DATABASE. SSMSBoost will tracks then connection changes and applies most specific matching color to the status bar. Most common usage can be "Red" status bar for your live system and "Green" for test database.
Important Database alert
Use this feature for very important connections additionally to Connection coloring. When adding Preferred Connection tick "Important DB Alert", specify alert message and color. Whenever current connection changes to this particular connection a floating pop-up will remind you that you are working with important database.
Script Object from SQL Editor: "Go To Definition" for SQL Objects
Script object located at cursor position directly from SQL Editor.
Keyboard Shortcut: [F2]
SQL Server Management Studio currently lacks a feature present in other Visual Studio Editors - "go to definition".
SSMSBoost plug-in solves this problem by adding a tool what you need: Script object located at the cursor position to a new window.
You can invoke this feature by
pressing Keyboard Shortcut [F2]
right-clicking the identifier and selecting "Script object" from the context menu
SSMSBoost performs search for valid identifiers at cursor location and allows you to select, which one you want to script. If you select part of the identifier - SSMSBoost will perform no search and will use selected text as object identifier.
If you would like to change the default Keyboard Shortcut for the "Script Object" feature you can do that using Shortcuts Editor feature of SSMSBoost (required only in SSMS 2008 as far as SSMS 2012 has built-in shortcuts editor).
By default objects will be scripted as CREATE. If you want to generate ALTER scripts you can use "Script as ALTER" command also provided by our add-in. Use Extras->Settings->"Shortcuts & Macros" to redefine F2 shortcut to this command.
Locate Object in Object Explorer focused in SQL Editor
Locate object in Object Explorer located at cursor position directly from SQL Editor.
Keyboard Shortcut: [Ctrl-F2]
An often need is to know more information about object under the cursor: its columns, parameters (for function or procedure), other properties. If a database has hundreds of objects, locating an object in the Object Explorer can take some time. SSMSBoost allows to locate object in seconds! Just place the cursor on the identifier and
press Keyboard Shortcut [Ctrl-F2]
right-click the identifier and select "Locate object" from the context menu
SSMSBoost performs search for valid identifiers at cursor location and allows you to select, which one you want to locate. If you select part of the identifier - SSMSBoost will perform no search and will use selected text as object identifier.
Object fill be focused in Object Explorer and it's node will be expanded. So that you can easily access it's properties and, for example, drag-n-drop parameters of stored procedure into SQL Editor window. If you want to change the default Keyboard Shortcut of "Locate object" feature you can do that using other feature of SSMSBoost - Shortcuts editor (needed only in SSMS 2008, as far as SSMS 2012 and later versions finally have built-in shortcuts editor)
Track current database
When working with lots of opened scripts connected to different servers/databases, sometimes it is useful to locate current database in Object Explorer.
Just hit the button on the toolbar and current Server/Database will be focused in Object Explorer.
This feature can be used as single-time action or you can switch "track current database permanently", which will always focus current database whenever you change connection of your script or switch between scripts. Generally - it is something like "synchronize table of contents" function in windows help, or like "synchronize solution explorer" in Visual Studio.
Autoreplacements
Auto replacements or "snippets" allow you to write frequently used SQL commands more quickly. Type "sel" and press space, enter or tab (configurable in Settings) - and it will be replaced by "select * from". "upd" will be replaced by "update # set where". "#" defines, where cursor will be placed after replacement is done. (This symbol is customizable per Autoreplacement). SSMSBoost Autoreplacements have following features, improving similar functionality of SSMS:
Tokens can be case-sensitive
It is possible to specify final cursor location, after autoreplacement has triggered
You can use standard SSMS parameters like in Autoreplacements. SSMSBoost detects these parameters and automatically shows Parameters replacement dialog, saving you additional clicks/keystrokes.
Following parameters can be used in Autoreplacements: {User}, {Server}, {Database}, {Connection}, {Timestamp} , {Timestamp:Format} (.Net datetime format). These parameters will be replaced with actual information after Autoreplacement has been triggered. For example you can create an Autoreplacement to place a Username/Timestamp comment into source code.
Custom SSMS window title (caption)
SSMS caption in title bar with SSMSBoost add-in Originally, SSMS displays static caption "Microsoft SQL Server Management Studio". If you have several instances open and try to switch between them using Alt-Tab or task-bar, you will not be able to see the difference between instances. SSMSBoost add-in allows to re-define the caption of the window, so that you will be able to see current document name and connection information. You can also define your own pattern to be used for window title.
Available parameters: @FileName, @Server, @Database, @User. Parameters can be used within main pattern as well as in sub-patterns {ProjectName} and {Connection}. {ProjectName} pattern will be inserted only if SSMS project is loaded. {Connection} pattern will be inserted only if connection is open.
Picture on the right shows you how different SSMS instances will be displayed on the task bar. Pictures below show how caption of SSMS looks like and how windows appear in Aero Peek.
Advanced objects search
Using SSMSBoost advanced objects search you can search for objects across several databases and servers. When searching, you can use ? and * wildcards.
Clicking on search result unlocks several functions:
Script selected object - will open it's SQL source in new window
Locate object - will navigate Object Explorer to object's node
Copy selected identifier into current window - will insert selected objects into current cursor position
Select Current Statement / Run current statement
We have received a lot of user requests to implement "Run current SQL statement" functionality, because finding and selecting the boundaries of the current SQL Statement to perform "Run selected statement" requires several keyboard strokes or mouse clicks and is time-consuming.
We have implemented "Select current statement" (Shift-F5), which, followed by "Execute"" (F5), gives you desired "Run current statement" functionality in SSMS Query editor.
The reason we did not implement direct "Run current statement" command is to save you from fatal errors. You have the last chance to review the statement boundaries automatically detected by parser, before hitting final "F5".
Jump between matching BEGIN/END tokens
This functionality allows to Jump to BEGIN or END of the current block or jumping between corresponding BEGIN/END tokens. To activate the function, select corresponding command in SQL Editor context menu.
Note, that you can also use universal "JUMP" shortcuts Ctrl+Shift-Up Arrow to navigate "UP" (to BEGIN) or Ctrl+Shift-Down Arrow to navigate "Down" (to END). These shortcuts are shared with Jump between COLUMN/VALUE within INSERT statement functionality and act depending on current cursor placement.
Jump between COLUMN/VALUE within INSERT statement
When editing large INSERT statements with big number of involved columns, it is useful to know to corresponding COLUMN of currently edited VALUE or, vise-versa: sometimes you want to locate corresponding VALUE within values list for current COLUMN. Here is the solution: use "Jump between COLUMN and VALUE" command in SQL Editor context menu.
Note, that you can also use universal "JUMP" shortcuts Ctrl+Shift-Up Arrow to navigate "UP" (from VALUE to COLUMN) or Ctrl+Shift-Down Arrow to navigate "Down" (from COLUMN to VALUE). These shortcuts are shared with GoTo BEGIN/END functionality and act depending on current cursor placement.
Format SQL Code
SSMSBoost allows to format SQL Code using two different formatting engines.
SSMSBoost formatting engine
SSMSBoost formatting engine offers a wide variety of options. The best way to learn it is by using Built-In Template editor: it will apply changes to the formatting template while you edit it.
To create/edit formatting template:
Open one of your SQL scripts - it will be used to display formatting result while you change options
Run SSMSBoost menu->Query->SQL Format Styles template editor
Change template options and they will be immediately applied to your code.
Hit "Save changes" when you are done
Now you have created your own formatting template, you can choose it on the toolbar in the formatting drop-down and hit "Format" anytime to format your SQL code.
Under SSMSBoost settings->Formatting you can manage formatting templates as well, particularly - you can import/export them, to share templates with your colleagues.
Results Grid Scripter (Flexible Template-based Scripting)
Results Grid Scripter allows to script data using flexible scripting templates to clipboard or to disk.
For example, to export & open contents of results grid in Excel you need a few clicks (also see picture below):
Right click results grid
Select "Script data as" command
Select "Excel (MS XML Spreadsheet)"
Choose between "All grids", "Current grid" or "Selection"
Choose "To Disk"
After scripting is done click displayed link to open created document in Excel (this step is not displayed on the picture)
Existing templates can be fully customized and new templates can be added under:
Extras->Settings->"Results Grid:Scripter Templates".
Read template properties description in configuration dialog for more information about specific properties.
Use existing templates as samples to experiment and create your own templates.
Post your templates at our forum if you have created useful ones and want to share them with others.
Results grid scripter feature is shipped with following predefined templates:
Property:Value - copies results as ColumnName:Value
WHERE Column=Value - selected values are copied as 'WHERE (ColumnName=Value) OR ...' allowing to generate WHERE filters quickly by selecting required column values
WHERE ColumnName IN (value1,value2..) - generates WHERE ColumnName in (Value1,..) filter based on selected values
Excel (MS XML Spreadsheet) - saves results in MS XML Spreadsheet format, that can be easily opened in MS Excel.
Values preserve their data types: If you export telephone numbers to Excel, they will not be treated as formulas anymore !
INSERT INTO #tmpres EXEC sp_storedProc - quickly generates temporary table declaration, that can be used to insert execution results of stored procedure.
SELECT - scripts results as SELECT VALUES statement. It is some kind of table data exported as script. Datatypes are preserved.
XML - results are saved as pure XML document
HTML table - results are saved as HTML Table
Copy Results Grid data to Excel (as xml Spreadsheet)
Copying data from Results grid to Excel via built-in Ctrl-C command results in loss of data type information. Excel needs to analyze inserted data and to "guess" it's type and regional settings.
SSMSBoost allows you to copy Results Grid data in XML Spreadsheet format, preserving data type and precision information. Strings remain Strings, DateTime remains DateTime and Numeric and Money data keep their precision and scale.
If you like this feature, make sure you read about Results Grid Scripting feature: it is much more flexible and customizable and designed to output really bit amounts of data.
Find in Results Grid
Find in Results Grid allows you to search for values in current grid, all grids or selected block of data.
Search using wildcards
Search option allow to define search range, search tolerance and search order
Double-click search result to navigate to corresponding cell
Search results offer a wide variety of options: copy cell data, preview data, focus matched cell...
You can always press Ctrl-F in SSMS Results Grid to start Data/Column search. Both windows have a quick switch button on the bottom.
Quickly switch to Find column in Results Grid dialog, using button at the bottom
Pictures below show initial view and multiple results representation.
You make SSMSBoost select found cells in Results Grid to script them or perform subsequent search within selection.
Find column in Results Grid
SSMSBoost offers search for columns in all currently displayed Results Grids (there can be several result sets returned by query).
Search using wildcards
Double-click the column to focus it in the corresponding grid
Select column name in results and press CTRL-C to copy it's name
Column data type, precision and NULLability are displayed in results set. Yes - now you know exact data types of the result set.
Quickly switch to Find in Results Grid dialog, using button at the bottom
You can always press Ctrl-F in SSMS Results Grid to start Data/Column search. Both windows have a quick switch button on the bottom.
Copy Results Grid Headers (Column Names)
SSMS Results Grid copy headers You have some results set in Results Grid and want to copy some of Column names ?
Select cells from columns that you want to copy (Ctrl-Click) and choose "Copy selected Headers" from Results Grid context menu.
Column names will be copied to clipboard. You can also run "Copy all Headers" command, if you want to have all headers.
Note: it does not matter, cells of which row do you select. We just need to know the column.
Copy cell data from Results Grid 1:1 (preserving line breaks)
SSMS Results Grid copy original cell contents If SQL Query outputs long strings of data (for example from TEXT, NTEXT, VARCHAR or NVARCHAR fields) SQL Server Management Studio truncates them when outputting to Results Grid. Truncated string will be also copied to clipboard, if you use native copy command.
SSMSBoost introduces "Copy current cell 1:1" command: select cell you want to view/copy, open context menu -> "Copy current cell 1:1" and full data will be copied to clipboard - all bytes and without any modifications.
Copy as SQL values List
You have some dataset in Results Grid and want to add a filter to your query, based on ID's from several rows. If you just select and copy them, every value will be on new line, and String and DateTime values will not be in "ready to use" format. SSMSBoost allows to speed-up the process: just select "Copy as SQL Values list" from context menus and you get a ready-to-use comma-separated list of values, that you can paste into your "WHERE" statement.
SSMS Results Grid data Visualizers
Feature allows to export & view files or some big amounts of text or XML data from tables (like files from document storage of sharepoint services). Required data should be simply output to Results Grid. By right-clicking the cell with required value and selecting "Visualize As->.." you can tell to save data to file with predefined name and open it with custom or default application. No matter that SSMS truncates long data from VARBINARY/VARCHAR fields when displaying them in Results Grid: SSMSBoost works with internal storage of SSMS and extracts complete cell value. Below you can see how a picture from [LargePhoto] field of [Production].[ProductPhoto] table from [AdventureWorks] database is being visualized:
There is actually no magic: in Settings dialog you can configure list of Visualizers. You define Visualizer name, file extension for saving data and also an application, used to open saved files. If you leave Application path empty SSMSBoost will perform "Shell.Open" - forcing windows to open file using associated application.
There is a trick for using this feature: if your field keeps images of different types like .bmp, .png, .jpg, etc., then you do not have to define own visualizer per type. Just define visualizer "Picture" and extension to save ".pic". Then associate in Windows .pic with windows picture viewer. Picture viewer will analyze contents of .pic and display image correctly, no matter if it is .jpg or .bmp. This trick might also work with other picture viewers or other programs.
Fatal Actions Guard
There is always a possibility to accidentally execute UPDATE or DELETE statement without WHERE clause, ruining the data. Yes, in theory, it should never happen, backups should exist, triggers and foreign keys should stop deadly modification, but in reality additional protection can save you hours or work, or, maybe even your job ;)
Fatal Actions Guard parses scripts executed in SSMS and checks for potentially dangerous statements, like DELETE or UPDATE with missing WHERE clause, or usage or TRUNCATE statement, which bypasses delete triggers. To get an overview about the feature, open SSMSBoost settings and search for "Fatal actions guard".
It is possible to configure what will happen if critical statements are found: should execution be stopped or should user be able to continue, confirming his intentions. You can also exclude particular tables from this check ("Exclude table names"). Further, you can enter custom tokens, that will cause following actions, if found:
"ask" token - will force SSMSBoost to ask user for execution confirmation. For example, if you add "#checklater" token in "ask" tokens list and will start adding it to your scripts, SSMSBoost will keep asking you for execution confirmation, until you delete all these tokens. This can be practical, if you are working on some script and want to mark some critical places, that should be verified.
"prohibit" token - pretty the same logic as "ask" token, only SSMSBoost will not allow you to run the script at all. You can add it to script files, that are not intended for blind execution. Sometimes system administrators collect frequently used commands in one script, and it can be fatal if someone just executes that file.
"magic unblocking" tokens allow you to disable execution guard for some particular script. For example, if you often use "full wipe" script to initialize your test database and use TRUNCATES there, just add #breakingbad in settings and then add this token as a comment to your script and. Execution Guard will be disabled for that particular file.
Run selected script as Database Query (.dqy) in Excel
Microsoft Excel has a perfect possibility to run direct database queries and use results for further processing: as simple data table, as base for Pivot tables and Charts. However, there are some clicks to do, before you get your query executed in Excel.
SSMSBoost adds 1-click functionality to complete this:
Select query, that you want to export for execution in Excel
Execute SSMSBoost Menu->Query->Run in MS Excel command
SSMSBoost will create Database Query (.dqy) file, passing selected SQL Statement and current connection information
File is now passed to Excel for further processing. It might be necessary to adjust security settings in Excel to allow processing of ".dqy" files
Note: Excel has some rules, that your query must fulfill. You will find detailed documentation on the Internet, but to keep it short: it must be single SQL query, returning one dataset.
IMPORTANT: Make sure you check SSMSBoost Settings->Database Query (.dqy) for fine-tuning options. For SQL Server native authentication SSMSBoost can export connection password in clear text form, which might be a big problem, if you are going to give .dqy file to other persons. And yes - this is a workaround how to restore forgotten SQL Password for some connection, that is still present in your recent connections list.
Intellisense Completion Fix
SSMS 2012 always sets "Intellisense autocompletion" to "On" whenever you open a new query window. This is unfixed bug confirmed by Microsoft. We have added the possibility to define global default setting for IntelliSense behavior. See Settings->Advanced "Intellisense completion mode" option.
Results Grid Aggregates
Excel has a perfect function, which allow users to select several cells and see their SUM in the status bar. Well, SSMSBoost adds even more advanced Aggregates functionality to Results Grid:
All you need to do is to select a range of cells. SSMSBoost activates Aggregates windows and starts displaying aggregates. By clicking checkboxes below the calculated results you can select which aggregates to calculate: SUM, MIN, MAX, COUNT, COUNT NULLS, DISTINCT COUNT, AVG.
Please note, that some aggregates are data type-specific and will not be calculated (like there is no SUM for Strings).
Aggregates window, like most of other SSMSBoost windows is dockable floating pane, which can be docked in SSMS environment like any other window. You have to size/dock it when it appears for the first time.
There are some fine-tuning options available under SSMSBoost Settings->Grid Aggregates. Make sure you check them and choose best settings for your usage case.
Query Post-Execution handlers
In current version we have implemented only one post-execution handler: an Info message is shown, when query completes the execution. This is useful particularly when you execute long-running queries and switch to other window within SSMS or even to other application.