Azure Data Studio – Profiler

For many years DBAs have been using Profiler to help with troubleshooting issues.   This involved opening a second application name SQL Server Profiler.  With Azure Data Studio we can now stay in one application by utilizing the SQL Server Profiler extension. Like most extensions, this one is still in preview and could change before final release.

The documentation states this, “The SQL Server Profiler extension provides a simple SQL Server tracing solution similar to SSMS Profiler except built using XEvents.”.  This means that the SQL Server Profiler extension is using Extended Events instead of trace.

As stated earlier this is an extension, therefore will need to be installed.  This is a pretty easy process.  The first thing we need to do is to open the extensions window.  This can be done under the View menu.

View –> Extensions

Once the extension window opens, do a search on “Profiler”.  When you do you will see this.

Once you find it, click the Install button you see above.  This extension was created by Microsoft and is a very fast install.  In addition, if you look at the above image, you will see a star in the upper left corner, this means that the extension is recommended by Azure Data Studio.  You will not need to restart Azure Data Studio once the installation is complete.

The shortcut of the Profiler extension is ALT + p.  If you use the short cut before you have installed the extension, you will still see something that appears to be profiler even though it is not.  The image below is a screenshot.  Notice that the tab says Profiler, yet the sessions are all the Extended Events sessions that are on the server I am connected to, so this really isn’t Profiler, even though it might look like it. Just a side note, if you have the proper permissions, you can start and stop Extended Event sessions here.

Once the Profiler Extension is installed there are two ways to open it.  The first one and the easiest one is to use the shortcut, ALT + p.  The second method is to utilize the Command Palett.  This can be found under the View menu, should be the top item. When you open it, type the word “profiler” in the search and it will appear as below.

Once you open Profiler, if you do not have an active connection, you will be asked to create one.  Then you will be taken to the screen below, which is the same screen you will be taken to if you have an active connection.

You will not be able to pick the events like you can in Profiler.  At this point in time, it appears that you are limited to two profiles, TQL_OnPrem and Standard_OnPrem.  Notice both say OnPrem, there is a third option when you connect to an Azure SQL Databases, Standard_Azure.  Although there are three, you will only see the Standard_Azure template when connected to an Azure SQL Database.

Earlier I mentioned that the Profiler is built on Extended Events.  This is how you can see if a current session is running.  Extended Events information is stored in a number of system tables and views.  To see what Extended Events sessions are currently running you can use the code below.

SELECT *
FROM sys.dm_xe_sessions;

Your results will look similar to what is below.

Once I start the Profiler trace, I will see an additional session.  Notice that the name starts with ADS.  This will be the name you will see if you are using the TSQL Templete, ADS_TSQL_OnPrem.  Once you stop the trace, this entry will disappear.

 

If you look at Extended Events in SQL Server Management Studio you will see two now sessions.

These names match up with the names you will see when you start Profiler in Azure Data Studio, just with ADS_  at the beginning.

 

If you have used the XEvents Profiler in SQL Server Management Studio, these might look familiar.  The sessions that XEvents Profiler creates are exactly the same as the ones created by the ADS Profiler, just a slightly different name.  The image below shows that ADS and SSMS sessions that are the same.

 

Once the session starts you will see this across the top of the grid.

Going left to right, let’s briefly cover each item

Select Session:  This has a drop down box to the right.  When a session is running, this drop down box is not available.  However, if you stop the session, you will be able to pick a new sessions.  The options include the two mentioned above as well as any Extended Event sessions that are currently on the server

Start\Stop\Pause:  These do exactly as you would think. Start a sessions, stop as session and pause a session

Filter\Clear Filter: This allows you to place a filter on the results.  Here you can also save the filer, however I was struggling to get this to work properly.

Select View:  Like the session label mentioned above, this also has a drop box to the right.  However, for this, the items in the drop down list simply change what is displayed.  When changing this, you will not only see a change the data that get’s captured, you will also see changes in the columns.

Autoscroll: This turns of the autoscroll

Clear Data:  This is the farthest one to the right.  Like a few of the other’s, this does exactly what it says it does, clears data.

Once you start collecting data, you will see a grid.  If you look next to the EventClass header you will see a little green arrow.  This is supposted to sort the data in a manny you decide.  What I have found it that this works on some columns, while appearing that is doesn’t work on others.

If you select a line in the grid, you will then see the Text and Details tabs in the bottom half.  Similar to this screenshot.  The text will simply return the query that was running, like below.

The Details tab will look similar to below. It will display the data for a the record that is selected in the grid.

There, now you are ready to use the Profiler extension.  One of the limitations is that you do not have an option of where to save it.  Just like the XEvent profiler in SQL Server Management Studio, the data here is somewhat temporary.

Earlier, I mentioned filters on the Profiler.  While they do exist and they are easy to work with, I would be a good idea to know where the filter stored.  The answer, is this filter is storted in the settings.json for Azure Data Studio. To see this we need to review the json file.  The settings window can be opened by using the Preferences menu item under File.  When you do a search for the word “Profiler” you will get the results as you can see below.

All the settings will require you work with the settings.json file.  To get there simply click the link. In the image below, you can see that there is a setting that was saved by using the save functionality in the filters form.  In this case the name is default, the field I want to filter it on is SPID and looking for a value equal to 51.  For the operator, 0 is the value for equal, while the value for not equal to is 1.

You now have enough information to start using the Profiler extension.  Over all, it isn’t bad, however because this is a function of a client application caution must be used.  If there are a number of folks in your environment that have Azure Data Studio installed, you could have a number of folks running this at the same time.  Given that the Profiler Extension is based on Extended Events, you should be aware that for the most part Extended Events are very lightweight, however if many people are doing this, there is a risk of causing a performance issue.  So use…but use with a certain amount of caution.

Thank you for visiting my blog!!

 

 

 

 

 

 

 

 

 

 

 

 

Azure Data Studio – Poor SQL Extension

When I write T-SQL, I attempt to make it as readable as possible. In order to do this, I must follow best practices for formatting.  There are a number of online formatters that can help you out, which you would depend on if using SQL Server Management Studio.  However, with Azure Data Studio that is no longer that case.  There is an extension named Poor SQL Formatter that we can use.  Like most extensions for Azure Data Studio, this extension is currently in preview.  Despite that, it can still be very useful.

Installing the Extension

To install the extension, the first thing we need to do if find it.  This can be done by clicking the Extension item under the View menu.  Once the Extension window appears, simply type the work “poor” in the search window.

When you click install, you will be taken to the GitHub page for the extension.  You will need to download the vsix file.  You will need to place it in a location that will not be overwritten or deleted.
Once you have downloaded the file, you will now need to install it.  This can be done by going to the File menu and clicking “Install extension from VSIX package”.  Then you will need to navigate to the location you placed the file.  When you locate the file, Azure Data Studio will then install it.  You will see a popup in the lower right corner that the install is complete.
Once installed, this extension does not require a restart of Azure Data Studio.
What does this Extension Do?
According to the documentation in ADS the extension provides the following help with formatting TSQL.  These are copied directly from the documentation.
      • poorSql.tabIndent: Use tabs for indentation?
      • poorSql.numIndentSpaces: Number of spaces to use when indenting. Ignored if tabIndent is true.
      • poorSql.maxLineWidth: Max characters per line.
      • poorSql.statementBreaks: Number of line breaks between statements.
      • poorSql.clauseBreaks: Number of line breaks between clauses within a statement.
      • poorSql.expandCommaLists: Expand comma-delimited lists onto new lines?
      • poorSql.trailingCommas: Should commas be at the end of lines?
      • poorSql.spaceAfterExpandedComma: Should a space be added after commas?
      • poorSql.expandBooleanExpressions: Should boolean operators cause a linebreak?
      • poorSql.expandCaseStatements: Should WHEN and THEN expressions in a CASE statement cause a linebreak?
      • poorSql.expandBetweenConditions: Should arguments of BETWEEN expressions cause linebreaks?
      • poorSql.expandInLists: Should IN lists be split by linebreaks?
      • poorSql.breakJoinOnSections: Should the ON section of a JOIN clause cause a linebreak?
      • poorSql.uppercaseKeywords: Should keywords be automatically uppercased?
      • poorSql.keywordStandardization: Should less-common keywords be replaced with common alternatives? (Caution: only safe for T-SQL)
      • poorSql.obfuscate.randomizeKeywordCase: Obfuscation: should the case of keywords be randomized?
      • poorSql.obfuscate.randomizeLineLengths: Obfuscation: should line lengths be randomized?
      • poorSql.obfuscate.preserveComments: Obfuscation: should comments be preserved?
      • poorSql.obfuscate.enableKeywordSubstitution: Obfuscation: allow common keywords to be replaced with less common alternatives? (Caution: only safe for T-SQL)

Now that the extension is installed, you will see the above items in Settings. You can get to settings under the File menu, File –> Preferences –> Settings.  The best way to find all the settings related to this extension is to do a search on the word “poor”. Most of these are Boolean settings, True or False.  However there are some that are not.  The settings below are the ones that are not Boolean and the default value is also listed.

      • poorSql.numIndentSpaces is set to 4
      • poorSql.maxLineWidth is set to 999
      • poorSql.clauseBreaks is set to 1
      • poorSql.statementBreaks is set to 2

There are a few settings that are not enabled by default.  These are listed below.  Something to keep in mind, the extension is still in preview and could change with the final release.

      • poorSql.trailingCommas
      • poorSql.tabIndent
      • poorSql.obfuscate.enableKeywordSubstitution
      • poorSql.keywordStandardization
      • poorSql.expandInLists
      • poorSql.expandBetweenConditions
Now that it is installed, how do I use it?
If you look at the code below, you may see a few coding issues. these are issues I believe make it more difficult to read the code.
      • Not all key words a capitalized
      • The columns in the SELECT are kind of sloppy.  There are three columns in one line with the other two are the only column in the line
      • The CASE is more difficult to read because it is on a single line
      • The joins are hard to read because they are not organized in a readable manner
Below is the unformatted code.
select p.Class
    , p.Color, p.ProductID, p.ProductNumber,
p.Size
    , CASE WHEN p.color = ‘Black’THEN ‘BL’ END
from Production.Product p INNER JOIN Sales.SalesOrderDetail o ON p.ProductID = o.ProductID
inner JOIN sales.SalesOrderHeader h ON o.SalesOrderID = h.SalesOrderID
WHERE color = ‘black’
In order to use the PoorSQL extension, you will need to use the Command Pallet.  The Command Pallet can be found under the View menu. Once you click it you will see something similar to the image below.  The Command Pallet is a location that lists out many commands that we will use.  As more extensions are added, many of them place commands here to make it easier to use.  The Command Pallet if used can make our lives just a bit easier.
To find the PoorSQL commands, just type the word Poor into the search box and you will see the commands in the screenshot below.
If you pick the bottom one, SQL: Obfuscate, this will apply all the settings that have Obfuscate in the name.  If you choose the top option, SQL: Format, it will apply all the other settings, ones that don’t have Obfuscate in the title.
Once you have made a choice and clicked on it, all the appropriate settings will be allied. In the case of the code above, I chose SQL:Format.
SELECT p.Class
    , p.Color
    , p.ProductID
    , p.ProductNumber
    , p.Size
    , CASE
        WHEN p.color = ‘Black’
            THEN ‘BL’
        END
FROM Production.Product p
INNER JOIN Sales.SalesOrderDetail o
    ON p.ProductID = o.ProductID
INNER JOIN sales.SalesOrderHeader h
    ON o.SalesOrderID = h.SalesOrderID
WHERE color = ‘black’
After utilizing SQL:Format in the Poor SQL Formatter, the code is much easier to read and did not take very long to apply the formatting rules.  Of course being easier to read is my opinion, you will have to make that determination for yourself.
Overall, I do like this extension and would recommend to install it.  However, please keep in mind that this in still in Preview and may change before the official release.
Thanks for visiting my blog!!!

Azure Data Studio – Keyboard Shortcuts

Keyboard shortcuts have been a staple for the efficient use of applications for a long time.  Who doesn’t use Ctrl + C for copy and Ctrl + v for paste.  Most, if not all applications have shortcuts.  Azure Data Studio isn’t any different.  What is slightly different is that you can create your own shortcuts or modify existing shortcuts.

Azure Data Studio has an entire form dedicated to short cuts.  You can get it under the File menu.

File –> Preferences –> Keyboard Shortcuts

Or you could use the shortcut, this is a post about shortcuts so I should mention it.

Ctrl + k, Ctrl +s

Regardless of how you open the form you will see what is in the image below.

The first item to point out is the search box at the top. Like most search boxes, when you type something Azure Data Studio will filter the list based on critera if what you have typed appears in either the Command or When columns.  If you type the work “center” slowly you will see the list update with each letter you type.

Once you are done with the search, you can remove the search criteria by clicking the button at the far right on the search bar, see image below.  When you do this, the search box will be cleared and all the Keybindings will appear in the list again.

If you look across the top of the list you will see the column headers, Command, keybinding, When and source.

Command – this is the command we would want to execute when the keyboard shortcut is used.   If you look below the Command you can see that the line highlighted is “Cut” with the common shortcut of Ctrl + x.  While there are many commands, what you can’t do is create new commands.

Keybinding – this the keyboard short cut that is associated with the command.  In this case the Keybinding is Ctrl + x, which of course is the short cut.  If you see just a dash in this column, you can use that shortcut at anytime.

When – this is obviously when the shortcut can be used. For this example, the text input must have focus and it cannot be read only.

Source – this is where the short cut came from.  Mostly this will get set to “default”.  If you add a shortcut or modify and existing short cut it will read “user”.

Change an Existing Shortcut

You can change an existing shortcut to something you feel will work better for you.  To make this change all you have to do is click the pencil to the left of the command and a small form will pop uo.  In this form you will enter the new shortcut combination. Then when you hit enter, the change will be saved and the source will change from “default” to “user”.

Add a new shortcut

The first thing was do when adding a new short cut is to find a command that does not currently have a shortcut assigned to it.  For this example, do a search on the work “center”.    This will return the command for the menu item highlighted below to center the layout. Notice that there is not currently a shortcut assigned to this command on the menu.

This is confirmed when I search in the shortcut list.

So now we need to add a shortcut.  In this case we would like to you alt+a.  But before we do so, we should check to see if that combination is already assigned to a command. We can add the shortcut by clicking the “+” to the left of the command.

When you click the “+” next to the command the window below will pop up.  Although I want to use Alt + a for this shortcute, I wanted to show what will happen if I entered a combination that is already in use.  It will simply tell us at the bottom of the form.  In this case, that specific combination is currently in use in 8 other shortcuts.

If you want to know what shortcuts currently use that combination, click the link and you will be taken to the list.

To enter the desired combination you don’t really type it, you actually hit the keys you want to be in the combination.  In our case we want to use “Alt + a”, which is not currently being used by default.  To enter the combination, we need to actually press the Alt key and the “a” key at the same time.  When you hit enter, Azure Data Studio will save as you see in the image below.

Not only will we see the key combination in the list, but the menu item will also be changed.

To Remove a Shortcut

This is easy, just right click on the command and click “Remove Keybinding”.  This will not only removed the keybinding, but if there was a change to the menu when the shortcut was created, that will also be changed.

While I have not found too many instances when I need to add a shortcut or modify and existing shortcut it is good to know that I have an option if I needed it.

Thanks for visiting my blog!!!

 

 

 

 

 

 

 

ADS – Server Groups

Azure Data Studio has a ton of great features. Of course some I like more than others, but Server Groups is something I really like.  The team I am currently part of manages almost 200 production SQL Servers.  However we do find ourselves working on Dev and QA servers as well, greatly increasing the numbers of servers where could potentially work with.  This greatly increases the likelihood of making a mistake and running the code on the wrong server.   However, even with just a few servers, it would be nice to be able to group the connections to make it a bit easier.  Server Groups are not new, it has been in SQL Server Management Studio for quite some time.

Create a New Server Group

Creating a new server group is pretty easy.  When in the servers window, float your cursor in the upper right corner and three buttons will appear.  These buttons are, from left to right, New Connection, New Server Group and Show Active Connections.  The middle one is the one we want.

Once you do, a very simple window will open up.  This window may appear on the right side of your screen, which is by default where it will appear.  To create a group you only need three bits of information, the group name, group description and color.

Once you click “OK”, you will now see your server group.  You will see the description when you float your cursor over the group.

Now that we have our server group, it is time to add a connection to that group.  This is pretty easy as well.  When creating a new connection, one of the properties you will be asked to fill out, although not required, is the Server Group.

What if it is an existing connection I want to move to the new group?  This is even easier.  When in the connections window, simply drag the connection to the group header that you want to move it to.

Add a Server Connection to a Group

Now that we have the group, we can begin to add server connections to the group.  This can be done simply by right clicking on the group and then clicking, New Connection.  This will open the New Connection window with the server group already filled in.

If the connection already exists and would like to add it to the new group.  All you need to do is click and drag the connection to the header of the group.

Changing settings of an Existing Group

If you attempt to right click on a group, you will get three options.

      • New Connection
      • Edit Server group
      • Delete group

As mentioned earlier, the New connection will take you to the new connection window with the server group already filled in, although you can still change it if you like.

Edit Server group will take you to the same window that you used to create the group.  This allows you to change the Name, Description and color.

However, what if the setting I want to change isn’t in the list.  For this you will need to go to Settings.  This can be found under the File menu.

File —> Preferences —> Settings

When you are there, type group into the search box and a number of settings will appear. The ones we are looking for are under Data.  As highlighted below.

Notice there are four settings.  Of which, only two can be modified here.

Server Group: Auto Expand – will expand the server groups automatically

SQL: Tab Color Mode – This will change the color of the tab to the color of the server group it is in.  I complete another blog post on the details of how this works and how to change it.  The post can be found here.

That leaves Server Group: Colors and Data Source: Connection Groups.  These will need to be modified in a much different way.  These will involve editing the settings.json file.

The settings.json file can be found here:

C:\Users\daveb\AppData\Roaming\azuredatastudio\User

According to Microsoft’s web site the file can be found in this location:

%APPDATA%\azuredatastudio\User\settings.json

Although knowing the location is good, we really don’t need it.  Azure Data Studio provides a link that will open the file in ADS so we can modify it.

Reading the Json File

Let’s take a few minutes to go over how to read the json file.  While this is not a json post, knowing how to read what you see is important.  We will discuss only the two settings that are relevant to this post.  While reading this, please keep in mind I am not a json expert. Jim Dorame has a really nice SQL Saturday presentation titled “Json for the Data Mortals” that is very good.  He presented it at the SQL Saturday in Madison, WI this past year.  The presentation can be found here.  The image below is a screenshot of what you might see if you clicked either one of the links in the settings window.

If you look above, you will see these []. These define an array.  In this case the array is named: dataource.connectiongroups.  Under that you will begin to see these:{}.  These will define each object within the array. In this case there are four items.  Finally within each object you can find the properties.

Notice that each object has an ID as well as the ParentID.  The ParentID can be used to create a hierarchy of the server group.  This could be useful in many ways.  For example, you have a ton of SQL Servers, some in North America and some in Europe.  You could create a top level group named Produciton and then under that of two subgroups, North America and Europe.  Similar to what you see below.

Now let’s take a quick look at the Json.  In the image below, you will notice that the parentID for the North America object is the same as the ID for the Production object.  If you wanted to move the North America group to another top level group, you will need to find the ID of that new group and paste it into the ParentID setting of the North America group.  When you exit out of the settings.json file, you will be asked to save the file.  Of course you will want to save it.  If you do change it, keep in mind that the setting won’t take effect until Azure Data Studio is restarted.

Another property you may want to change is the group color.  When creating the server group, you only have a few options.

Well, what do I do if either I don’t like the colors or I have more groups that colors.  Again, this is where the settings.json file will come into play.

For each group you will see a color setting.  All you will need to do is find the hexadecimal number for the color you are wanting to use and place it into this property.  Here is a few good links, HTMLColors and Color-Hex.

Let’s say I wanted a group to be purple.  I could find the hex number, which is #800080 and paste it in the settings.json file as you can see below.

After restarting Azure Data Studio, this is what you will see, North America is now purple.

Now you have all the information to create groups to help you manage you servers.

Thanks for visiting my blog!!!

 

 

 

 

ADS – How to Mark a Tab as Production or QA

Have you ever been in an environment where you worked with both DEV\QA servers and Production servers?  Of course you have, we all have.  However, being in such an environment brings a certain level of risk.  We all try to be very careful to run any code we are asked to run on the correct server and in the correct environment.  Despite all of our checks and our Due diligence, we are still human and do make a mistake from time to time.  Azure Data Studio has a nice feature that will allows us to change the color of tabs based on the environment the server is in.  The image below is an example of what it would look like.

Setting this up can easily be done in two steps, creating Server Groups with different colors and changing the tab color property in Settings.

Create a New Server Group

Creating a new server group is pretty easy.  When in the servers window, float your cursor in the upper right corner and three buttons will appear.  These buttons are, from left to right, New Connection, New Server Group and Show Active Connections.  The middle one is the one we want.

Once you do, a very simple window will open up.  This window may appear on the right side of your screen, which is by default where it will appear.  To create a group you only need three bits of information, the group name, group description and color.

Once you click “OK”, you will now see your server group.  You will see the description when you float your cursor over the group.

Now that we have our server group, it is time to add a connection to that group.  This is pretty easy as well.  When creating a new connection, one of the properties you will be asked to fill out, although not required, is the Server Group.

What about if it is an existing connection?  This is even easier.  When in the connections window, simply drag the connection to the group header that you want to move it to.

Tab Settings

Now that we have our groups, it is time to set Azure Data Studio up so the query tabs will match the group color, similar to the image below.

To do this we need to change a property.  The property can easily be found by first going to Settings.  This can be found under the File menu.

File —> Preferences —> Settings

Once there, do a search on “Tab Color” and the proper setting will be returned.  The name of the setting is SQL: Tab Color Mode.

In the drop down box there are three options.

      •  Off
      • Border
      • Fill

Off is what it is…Off.  Border will place a colored line that matches the group color.  Fill turns the entire tab the color of the group.  If you change the setting, you should restart Azure Data Studio.

This is what the Border setting will look like.  Notice that there is a line across the top of the tab.

Now we have an additional check we can make to help us assure we are in the proper environment.

Thanks for visiting by blog!!!

 

 

 

 

 

 

 

 

Azure Data Studio – Server Reports Extension

This is my fourth blog post on Azure Data Studio extensions.  Of the three I have completed a post on, all of them I found to be very useful.  The Server Reports extension is no different.  As the name implies, it is for reporting on the server.  This extension is currently in preview mode, so things could change.  According to the documentation, this extension returns information about the following items:

        • DB Space Usage
        • DB Buffer Usage
        • CPU Utilization
        • Backup Growth Trend
        • Wait counts

To find the extension search the extensions on “Server Reports”, at the time of this post, this is the only extension that will be returned.

To install, simply click the Install button.  This is a very fast install and does require a restart of Azure Data Studio.  To use the extension, you will need to navigate to your connections by clicking the button that is in the green box below.

Once there, right click on the database connection you would like to review and go to “Manage”.  Once you do, you will see along the top extensions that you have installed.  However, you will only see relevant extensions, mostly extensions for monitoring or configuration.  I currently have the PowerShell extension installed, however it really isn’t a monitoring or configuration reporting extension, so it does not appear in the list of options.

What I found interesting is that if your connection points to the default database you will not see “Server Reports” as an option.

If you see this, you will need to expand the tree, right click on a database and go to “Manage”.  Then you will see Server Reports as an option.  Once you click on Server Reports you will see some pretty useful information.

Starting with what you see under the Home option. You will see two buttons, the top one is for Monitoring and the bottom one is for Performance.

The top one, Monitoring is already selected by default and returns four charts.  One for each of the following items.

          • DB Space Usage
          • DB Buffer Usage
          • CPU Utilization
          • Backup Growth Trend

When you click the “Performance” button you will see a chart returning information about waits.

If you look at all the charts, you will see an ellipsis in the upper right corner.  For all the charts when you click this you will see two options, run query and refresh.  However, some charts may have additional options.  The Wait chart above has a third option, Show Detail.  Which is what is below.

The thing I really like is that one of the options is Run Query.  Not only will this allow me to view the data in a grid format, it will allow me to see the actual query what was used to pull the information.

I really like this extension, I think it returns some useful information.  However, I think I like it more for the potential rather than for what it current returns.  Since this extension is still in preview mode, my hope is that there will be more counters added as time goes on.

Here are the links to my other blog post on Azure Data Studio.

Azure Data Studio Introduction

How to View Agent Jobs in Azure Data Studio

Azure Data Studio – SentryOne Plan Explorer Extension

Azure Data Studio – Explain Button

Azure Data Studio – Searching Extensions

Azure Data Studio – SSMS Keymap

 

Thanks for visiting my blog!!

 

 

 

Azure Data Studio – SSMS Keymap

One of the key board shortcuts I use quite often is ctrl + shift + u, which changes all the selected letters to upper case.  However, when I tried this in Azure Data Studio it did nothing. At first I was disappointed but then was very quickly relieved when I found the SSMS Keymap for Azure Data Studio Extension.  This extension will bring many of the keyboard short cuts into ADS, just as they are in SQL Server Management Studio.

In case you haven’t worked with Azure Data Studio and extensions, they are kind of like a snap in for ADS.  Once you have ADS open, to install it you will need to open the extension window.  You can do this either by clicking Extension under the view menu or click the button that is highlighted below.

When you finally arrive at the extension window, you will need to look for the SSMS Keymark extension.  It will looks similar to below.  If you look carefully you will see that this is a third party extension and not written by Microsoft.  This was developed by Kevin Cunnane.  When look at the GitHub to download the file, it looks like Kevin may work for Microsoft.  Although Microsoft’s name is not on this extension.

Click the install button and you will be taken to the GitHub location where you can download the .vsix file.  Place this in a location that it will not get deleted or overwritten.  Open Azure Data Studio, under the File menu you can click on the “Install Extension from VSIX package” item and navigate to the location you place the file.

When the install begins you may see this:

Click Yes and the install will begin.  This extension installs very fast so not much waiting.  Unlike some extensions, this one does not need a restart of Azure Data Studio to work properly.

This is a short post, but I plan on doing more posts on some of the different extensions.

Thanks for visiting my blog.

 

 

 

 

 

Azure Data Studio – Searching Extensions

As time goes on I would think that there will be more and more extensions for Azure Data Studio that we will be able to utilize.  While that is going to be great, it will also create a challenge, finding the proper extension.  This is where the searching capabilities come in handy.

Just as a reminder, to get to the extensions, all you have to do is click the button that is highlighted below.

Let’s take a quick tour of the extensions window.  There are three groups that you will see, Enabled, Recommended and Disabled.  To the right of the header for each group will also see the number of extensions that are in the group.  There is also a search box, we will cover that a bit later.  You may notice that some extensions have a star in the upper left corner.  When you see this, that extension is being recommended by Azure Data Studio. These are the extensions that you should really consider installing.

Above the groups there is a search box.  Once you start typing Azure Data Studio will begin to filter the extensions based on what you type. For example if I am looking for extensions that can help me manage SQL Server Agent jobs I could type the word “jobs” in the box.  The extensions will then be filtered as you type.  Notice below there are two extensions that have “jo” somewhere in the name or description.  In the example below, Palenight Theme is returned by cause of the provider name, JoseRocha.  “Jo” is obviously in the first name.  The second extension, SQL Server Agent is returned because “jo” is in the description.  Microsoft has made this type of searching very easy.

In the upper right hand corner of the extensions window you will see three dots, if you click on that you will see a number of predefined search criteria.  The first group in the context menu is about searching.  However, there is more you can do here.  You can also install extensions, enable and disable all extensions and check for updates to extensions.

Since this post is about searching we will focus our attention on the top portion of this menu.  I think the names do a pretty good job of describing what they are going to search on, so no need to really go into that.  However, when you do pick on the options, in the search box you will see an entry that starts with an @.  This is the criteria Azure Data Studio will search on.  In the example below I wanted to see only the extensions that are installed.

You really don’t need to use the menu if you don’t want to. You can type the @ into the search box and a number of options that are not available in the above mentioned menu.  There are a number of options that are not in the menu.  Such as @builtin, these are the extensions the obviously come installed as part of Azure Data Studio.

Notice that in addition to placing a filter on the extensions, you can also sort the extensions by a number of columns.

If you pick @builtin, you will see that as of the writing of this post, there are 32 extensions installed.

If you click one of the builtin extensions, many of them will have this warning in the documentation for the extension.

I am hoping in the future there are going to a large number of extensions we can pick from.  Searching can cut down on the time for us to search for an extension that works with a particular area, like SQL Agent jobs.  It can also help us identify what extensions are in need of an update and which extensions are install or disable.

Thanks for visiting my blog!!

 

 

 

 

Azure Data Studio – SentryOne Plan Explorer Extension

A few days ago I completed a post that hopefully provided information of what the Explain button is and why you might want to use it.  This post is a continuation of the same general topic, execution plans.  As I prepare to present my new session on Azure Data Studio I will be completing several blog posts on some of the great extensions that are available. Many of us have used the SentryOne Plan Explorer application and have enjoyed the ease at which it integrated with SQL Server Management Studio.  The extension for Azure Data Studio has similar ease of integration with the added benefit of addressing a few of the challenges that currently exist in ADS.  While this extension is still in preview, it can be very useful.

In case you are not familiar with an extension in Azure Data Studio, think of it as simply something that extends the functionality of Azure Data Studio.  There are a number of extensions that cover a wide range of topics.  These topics include Agent Jobs, performance reports, PowerShell and the topic of this post, SentryOne Plan Explorer.  Even though the extension is currently in preview, it already has many great features that can easily make our lives as a DBA better!

First things first, let’s talk about how to install the SentryOne Plan Explorer extension.  Once we have opened Azure Data Studio we will need to open Extensions by either clicking the item on the red box below or go to Extensions under the view menu.

Once there you will need to find the Extension for SentryOne Plan Explorer. It will look like what you see below.  One thing I would like to point out, the star in the upper left corner.  When an extension has this, that extension is being recommended by Azure Data Studio.

When you click the Install button you will be redirected to the SentryOne website.  On this page look for this,  ” Visit extensions.sentryone.com” link just a little bit down on the page.  Once you click the link you will be asked to login to the SentryOne site. After logging in, find the “Download Plan Explorer Extension” you will be asked to download a .vsix file.  This is the file you will need to add the extension to ADS.  Place this file in a location of your choosing and then click the “Install Extension from vsix Package”.  My suggestion is to put the file in a location that is easy to get to and won’t get over written or deleted accidently Locate the file and click Install.

If you have the Extension window open while it is installing you might see a small bar moving from left to right.  This will continue until the extension is fully installed.  Once it is installed you will see a popup in the lower left corner of ADS stating the install is complete.

After a quick restart of ADS, you are ready to utilize the SentryOne Plan Explorer extension.  In the lower right corner you will see a new item.  This will make it very easy to turn the Plan Explorer On and Off.  If by chance you are running queries and don’t want to see the execution plans, just click that to toggle it to off.  Now you will not see the plans.  The best part of this is that it does require me to restart Azure Data Studio like I would have to if I disabled the extension.

So now we have it installed, what’s next.  Well…run a query!  When you do a new tab will open up and you will see something like below.  When you click that new tab you will see this grid.  There will be one row for each statement in the batch.

This grid has some great information. The meat of the grid is to the far right.  You will see two links, one for the graphical plan and the other the XML.

When you click the “View Plan” link, the plan will open up in another tab.  Here you will see the familiar SentryOne look to the operators in the plan.

Here is the same plan using SentryOne Plan Explorer.  Very few changes to the look and feel of the plan diagram, which I think is a great thing.

 

You may notice the arrow in the upper left corner, this will take you back to the grid mentioned earlier.  You can still move the operators around by clicking and dragging them to another location as in the image below.  Also the selected operator still has the box around it.  This is another feature of Plan Explorer that I have always liked.

Another change you will notice pretty quickly is the differences in the properties displayed when you float your cursor over an operator. Initially you may think that a bunch of important properties were left out.  They weren’t left out as much as they were moved.

You will get the above pop ups when you float the cursor over the operator.  However, if you click on the operator, another larger popup will appear on the right side of the screen. If you compare the properties below and the properties above from Plan Explorer you will see that all the same properties are there.  What I like about what SentryOne has done, it allowed for a smaller popup when you float your cursor over the operator allowing for a quicker review of the properties.

 

In Plan Explorer, we are used to right clicking in the plan and seeing the menu on the right below.  You can still right click on the plan, however there are fewer properties displayed.  The biggest thing here is that the Zoom feature is still present.  The zoom slide bar we are used to at the bottom of the screen isn’t available.  I just need something that allows me to zoom in on the larger more complex plans. I really am more concerned that I can zoom if needed, not necessarily how it can be accomplished so although the slider makes it easier to zoom I can live with this.

When in Plan Explorer you may be used to see this. It is basically a number of sliders that control various aspects of how the plan is displayed.  These can be very useful, but the one I have used far more than the others is Zoom.  Sometimes the plan is very complex and have a zoom slider is a very simple way to zoom in on a particular part of the plan.  Even though there is still a way to zoom, I really liked this feature.

When I am working in SSMS and I want to save the plan, I just right click and save plan.  It will be save with a .sqlplan file extension.  Plan Explorer is only different in that the saved file will have a different file extension, pesession.   I have saved many plans over my career for a number of reason, to review later or to send to someone come quickly to mind.  I clicked on Save As under that file menu and nothing happened.  I tried SaveAs and Save both.  Same result.  This could be more of a limitation of Azure Data Studio than the SentryOne extension.

Even though the plan doesn’t appear to be something we can save, we can click on the “View XML” link and then save the XML.  Then find the file and change the extension to .sqlplan.  It can then be opened up in either SSMS, SentryOne Plan Explorer or Azure Data Studio.  I like that we have three options to view a plan.  Each has it’s pros and cons.  My plan is to use Azure Data Studio and the SentryOne extension because it keeps me in one application rather than two.

I will have all three applications installed on my computer.  Although the Azure Data Studio extension is not as robust as Plan Explorer, it can still be very useful. Even though this extension is still in preview, there are many things I like about it and I would highly recommend that you plan on getting this one if you are going to be using Azure Data Studio.

 

Thanks for visiting my blog!!!

 

How to View Agent Jobs in Azure Data Studio

As a DBA creating and managing SQL Server Agent jobs is an essential part of our day to day activity.  We have always done this via SQL Server Management Studio or Transact SQL.  Both of these are still great options for managing jobs, but what about Azure Data Studio.  Unfortunately, the management of agent jobs is not part of the native functionality of Azure Data Studio.  If you look at the screenshot below you will see that the SQL Server agent is not available.  So does this mean that Azure Data Studio isn’t the proper tool for the management of agent job?  The answer to this question is a classic DBA answer, it depends.  If you do not install an extension you will not be able to manage jobs.

Before going any further let’s take a few minutes to go over what an extension is.  As the name might imply, it extends something.  In this case Azure Data Studio has it’s functionality extended to do something that is normal cannot do.   An example of this would be the ability to manage SQL Server Agent jobs.  Since Azure Data Studio requires an extension to manage jobs, what extension would need to be added?  The answer is the Admin Pack for SQL Server extension.  There is a SQL Server Agent extension as well, this is part of the Admin Pack for SQL Server. While this extension does more than just job management, we will focus mostly on how manage Agent jobs using Azure Data Studio.

Here is a list of some of the functionality of the Admin Pack for SQL Server extension.

    •   Agent Job management
    •   Import file wizard
    •   Deploy and extract dacpacs
    •   Deploy and extract bacpacs
    •   Browse Extended Events.
    •   Other functionality as well

As stated earlier, we will need to install the Admin Pack for SQL Server extension.  So where do we get it?  Since it was created by Microsoft, you will be able to get it right from inside Azure Data Studio.

Before installing the extension, we should probably check to see if it is installed already or if it has been disabled. If you click the icon in the green box below, the extension Marketplace will open up.  If you see the Admin Pack for SQL Server under the Recommended block, it is not installed.  If you see it under Disabled, the extension has been disabled.

List of disabled extensions can be found in the following location. Notice that the extension has been greyed out.

Another way to determine if the extension has been installed is to see if the SQL Agent appears as an option when you are managing the server level.   As in the image below the Agent will be present when managing the server.  If you do not see SQL Agent, it means either it is not installed or has been disabled.  If it is not installed you can go to the MarketPlace and install it from there.

Now that we have confirmed the Agent extension is not only installed, it is also enabled, we are ready to manage the jobs on the server.  Let’s do a quick inventory of what a typical DBA would do with jobs.  All of these can be completed with Azure Data Studio, however there just a few minor limitations that will be discussed later in this post.

      • Manage jobs history
      • Manage operators
      • Manage alerts
      • Manage proxies

To get to the Agent job information in Azure Data Studio, you will need to right click on the server and go to “Manage”.  As seen below.

Once you do, you will not only see the SQL Agent but also other Extensions you may have installed in Azure Data Studio.

In the above image, you will see that not only do I have the Admin Pack for SQL Server extension installed, but I also have the extension for sp_whoisactive and a few others.  All of which I would recommend that you install.

When you are finally in the proper place to manage the jobs, you will see the same items you will see when using SQL Server Management Studio.  You will of course see the job name, last run, enabled status, category and a few others.  These are the same items we have been working with for years in SSMS.  In the green box in the image below you will be able to click each item and you will be taken to the management area for jobs, alert, operators and proxies.

As you can see above, you can sort by any column you would like and it also displays information about the failure if the last execution was a failure.  In addition to sorting, when you click the down arrow in the column header, you will also have an option to filter the column, similar to Excel. In the red box above is something that is pretty cool. Each bar represents one of the last five job executions. If you click on the of bars, you will be taken to the details of that execution. The image below is an example of what you will see.

When looking at the jobs you will see the button we can use to create a new job. When creating a new job, all the same information is requested so it is pretty easy to figure out.

There are a few differences though when creating a new job in Azure Data Studio.  Starting with job step type.  When working in Azure Data Studio you don’t have the three BI stack related types.  The image below shows the job step types for both SQL Server Management Studio on the left and Azure Data Studio on the right.

Another difference is the creation of new job schedules.  This can be done using SSMS, but can not be done with Azure Data Studio.  You can get use existing shared schedules, just can’t create new ones.

Moving away from jobs, alerts can also be created and modified utilizing Azure Data Studio.  All the same information can be entered, however there is one difference.  When creating an alert you are asked to chose an alert type. When using SSMS you will have three options:

      • SQL Server Event alert
      • SQL Server Performance condition alert
      • WMI event alert

When using Azure Data Studio, you only have one option, SQL Server Event alert.

While there are a few limitations, Azure Data Studio is still a very good tool.  The few limitations in Azure Data Studio for Agent job management can easily be over come simply by using SQL Server Management Studio.

Thanks for visiting my blog!!