We released Azure Data Studio 1.45 over a week ago, and today we’re announcing a hotfix for it, release 1.45.1. If you read the release notes for 1.45, or perused the 200+ issues closed for the release, you already know that we introduced numerous changes in 1.45. We continue to expand our test cases and add automated tests, but we discovered a couple issues after the release and determined a hotfix was needed. If you haven’t given this latest release a try, we’ll highlight a few items in this post so you know what to look for and where to go. Ultimately, I hope that the effort the team has put into this release is evident. I’m extremely proud of our engineers who continue to set high expectations for each release and work ridiculously hard to do as much as they can. Enjoy!
VS Code Version Updated
In this release we updated to VS Code version 1.79.2, from version 1.70, bringing ADS nearly current with VS Code. Keeping up with VS Code is an artifact of Azure Data Studio being a fork of VS Code, and the team accomplished a major feat with this latest merge. Many of the changes are not immediately obvious to users, but there are improvements across security, performance, and the application interface.
Changes in Appearance
Speaking of the interface, when you open the latest Azure Data Studio, you will likely notice changes in the Connections Pane (1.44 on the left, 1.45 on the right):
In the Server tree view we changed the Server Group coloring to be a smaller block to the left of the group name, rather than a large block spanning the pane, providing a more streamlined appearance. Within the Azure tree view there are numerous changes including support for multiple tenants, only displaying resources to which the user access within resource explorer, and icons specific to each resource. We also added support for PostgreSQL flexible servers and Azure CosmosDB for PostgreSQL in the Azure tree, and the result is a view that’s more complete and easier to navigate. In case you are not aware, if you try to connect to another provider database from the Azure tress, such as PostgreSQL or MySQL, but do not have the extension installed, you'll be prompted to install it.
Beyond Azure tree view improvements, we added the capability to clear encryption keys for Azure connections with the Clear Azure Account Token Cache command, which you can quickly execute via the Command Palette (Ctrl/CMD + Shift + P). ADS 1.45 adds support for saved connections against the same target (with the same or altered advanced options) with different names. This was a user request, where different connections to the server were needed for testing, or for managing transactions with different options (e.g. when using the DAC or application intent read-only). In the screenshot below, I’ve created two connections to the same server, but one has ReadOnly applicationIntent and the other does not, as you can see in the pop up:
Additional noteworthy changes include:
Connection pooling is now available but is disabled by default in this release. You can enable it in Settings via the Mssql: Enable Connection Pooling option. With connection pooling we will reuse connections where possible, and in testing we’ve found this reduces the number of total connections to a database and also improves connection performance. We expect this option to be particularly helpful for those connecting to Azure and those using VPNs.
We will be removing ADAL in the next release as support and development for ADAL ended in June 2023. Starting in this release, MSAL is enabled by default. If you have ADAL enabled, you need to edit the settings.json file (Ctrl/CMD + Shift P > Preferences: Open User Settings (JSON)) and delete the Azure: Authentication Library entry to switch to MSAL. If you cannot use MSAL for any reason, please create an issue immediately in the Azure Data Studio GitHub repository.
One request we’ve heard often is the ability to Filter objects in Object Explorer. This was available in Preview in the last release, and we are pleased to GA it in ADS 1.45 for MSSQL. When you select different objects in Object Explorer (e.g. Tables, Stored Procedures, etc.) there is a Filter icon inline, and the option is also available the via the right-click menu.
The filter dialog includes multiple properties, specific to the object type, and we’ve added operator options such as Starts with and Ends with for improved searching. If you need to clear a filter after it's been applied, simply right-click and select Remove Filter.
For those of you that use the built-in text filter (available anywhere in Object Explorer via Ctrl/CMD + F for all database providers), that functionality still exists! The new filter functionality executes in the context of an object type and allows filtering on multiple object properties. The built-in text filter searches on object name only. Both options are valuable to users, and while we continue to iterate and improve on the design and functionality, we welcome your feedback on how to make these options more intuitive or useful.
When you right-click and open the context menu in Object Explorer, long-time users may notice we moved some entries around. If this induces panic we understand (Who Moved My Cheese? is a valid response!), but we believe the changes will improve user workflow and the adjustment will be quick. Not only did we reorganize, but if you have preview features enabled, you’ll see New Database (Preview) and Delete (Preview) in the database context menu. Our commitment to providing the core functionality that users need to manage database starts with adding the ability to create and delete databases in the UX.
Finally, we’ve introduced a new async server tree for Object Explorer, which is enabled by default. You can find this option within Settings, under Server Tree: Use Async Server Tree. This is an improved design of the OE tree which allows us to support new functionality like filtering.
There were numerous improvements in this release specific to result sets, including the introduction of keyboard commands requested by users:
Holistically you should see performance improvements when aggregating data in result sets, and when copying them. We also added a progress notification when copying to the clipboard, and we improved handling of columns that include HTLM and XML data.
For those that copy a lot of data from the result set window, you’ll get notified if the number of rows or columns copied exceed the limits for Excel. Pro tip: it might be better to bcp the data out to a file from a command prompt in the Terminal.
On the extension front you may have heard that the MySQL Extension became Generally Available last month, and for those of you that use MySQL, it’s worth noting that it also works with the GitHub Copilot extension! The Profiler extension (which is Extended Events under the covers) now supports opening XEL files - simply open the Command Palette and enter Profiler: Open XEL File:
A dialog will open where you can browse to a saved XEL file, which will then open in the viewer. This may seem like a small addition to the Profiler extension, but it’s a first step toward a larger goal of improving query tuning capabilities in Azure Data Studio.
Preview Features and Insider Build
We’ve consistently mentioned preview features and the Insider build in the last few blog posts, and it’s come to our attention that the difference between the two may not be known. Our apologies!
We also have the Insider build, which is updated almost every day. Engineers continually complete PRs and merge changes into the main code base, and these updates appear in the Insider build. The Insider build can initially be downloaded from the GitHub repository, and then updated using the same method used by the Stable build (Help -> Check for Updates…).
The stable and Insider build can be installed side by side on your machine, and they are differentiated by their icon and in the title bar:
Preview features can exist in the stable build, the Insider build, or both. A preview feature is only available if the Workbench: Enable Preview Features setting is enabled, and a feature is in preview because it has not yet gone through the entire process for General Availability. In some cases, a feature may be code complete, but needs to pass an internal review before it can GA.
In the 1.45.1 release the Create Database and Delete Database features are in Preview. There is additional work actively occurring for the Create Database feature, and if you want to check progress against the stable release, use the Insider build. Note: an engineer may not check in changes daily for a feature, so sometimes you won’t see anything new for a feature for days or weeks. This is expected.
Within the Insider build, you’ll find additional features available in preview, including Detach Database, Server Properties, and Database Properties. These three features are actively in development, and you can expect changes if you use them in the Insider build.
If you’re wondering why you should use the Insider build when things are being actively changed in it and sometimes features are temporarily broken, here’s a list of reasons:
Now, I’m aware that some of you will read those items and think “Why should I do testing in Azure Data Studio for Microsoft, a company which makes millions of dollars?”
If that’s your thought process, that’s cool. Just keep using the stable release!
But if you’re interested in contributing to our community, and improving Azure Data Studio as product, then we’d love to see you use the Insider build and provide feedback on features and log bugs if you find them. We have had some users provide great suggestions about features such as user management that we’ve incorporated. Last week we met to discuss a new page in the Database Properties dialog that will display Database Scoped Configuration Options. We don’t have this in any other tool, and we want to make sure we get it right – so if that’s something you would use, keep updating the Insider build until you see it, and then let us know what you think!
In closing, I want to extend a thank you to the users who create issues, engage when we ask for more information or logs, and support what we are doing. I’ve thought about calling folks out by name, but I know that some individuals prefer anonymity, and I have no idea how I would make sure to include everyone. So quite simply: if you’ve done any of these tasks in 2023, thank you. And if we get the chance to meet in person, please let me know you're a contributor so I can say it directly. Cheers!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.