Unwired for Weeks

I took a few weeks off recently for a vacation with my family. We traveled from Denver to Yellowstone National Park in Wyoming and then on to Glacier National Park in Montana. We drove a horse trailer, camping along the way in the vast outdoors of America. It was a wonderful time and a beautiful part of the country. If you get the chance to visit, I’d highly recommend the trip.

One of the interesting things on this trip was that I was very unwired. In fact, I didn’t even take a laptop, which is a rarity for me. Often I’ll take one to jot notes, sketch an editorial, or just have around to check on things. This time, I didn’t bother, and neither did my wife. One kid did, but only because he was enrolled in a couple classes (CS and Math) this summer and had assignments to do.

The only device I had was my phone, which didn’t have service for much of the trip. Both during long drives (I was glad Google Maps downloads directions), at many of our campsites, and in the national parks, there was little service. In fact, when I did have service, I was surprised. The camping locations did have wi-fi, but I only used it to upload pictures of the trip and didn’t even bother checking social media as I posted. I mostly uploaded pictures to ensure I had a backup.

I did check email once early on to be sure that I hadn’t forgotten anything from work early, and forwarded on a couple items to people, but when I arrived home last week, I had hundreds of messages from Redgate and probably close to a thousand from SQLServerCentral. It was quite a chore handling and deleting a number of items, and took half of my Monday back in the office.

What was interesting to me is that I didn’t really miss the social media much, certainly didn’t miss the news, and nothing that important came up. I didn’t worry about work, knowing that something would go wrong (such as a few buggy questions) and that someone would handle the situation (thanks to Grant for fixing things) or delay the item until I returned. I found numerous meetings canceled or rescheduled without me and quite a few hastily dashed emails or queries that were later retracted or amended. In fact, going through emails from newest to oldest allowed me to delete older, out of date messages without reading them.

I rarely take more than a few days off at a time, usually just a long weekend here and there, but this proved (again) something I’ve suspected for a long time. Much of the pressure we feel with deadlines at work is arbitrarily imposed. Whether we do it to ourselves or someone else picks a datetime, there isn’t any rationale for the choice. Usually the goal is to complete work as fast as possible, but if there are delays, if something comes up, with life, other tasks, unforeseen failures (hardware/software) get in the way, the business will survive.

I learned a long time ago that despite my best efforts, things will go wrong and there will be delays. I’ve learned to expect them, accept them and try to not add any extra stress on myself when things are delayed. Go home at a reasonable hour most of the time, live the rest of your life, while doing the best professional job you can. There will always be more work, and the business will survive if most of your work ends up being delayed slightly.

Steve Jones

The Voice of the DBA Podcast

Listen to the MP3 Audio ( 6.2MB) podcast or subscribe to the feed at iTunes and Libsyn.

Posted in Editorial | Tagged , | Leave a comment

Flipping Sides in SQL Operations Studio

I’ve been starting to use SQL Operations Studio (SOS) a bit more. This is a small, lightweight editor that is based on Visual Studio Code. It’s fairly limited, though it’s still in preview. You can download it and give it a try.

One of the things that I like is a consistent UI when writing code. I often hide the OE in SSMS, but I don’t want code moving left and right when I’m working with it. That can be a little jarring.

When working in SOS, I usually start with a query, and no blades (panes?) open. My workspace looks like this.

2018-07-09 20_02_47-● SQLQuery1 - SQL Operations Studio

If I need to commit to version control, I’ll click that button, but then my code moves. (I’m really not committing this query. It’s just an example.

2018-07-09 20_04_12-SQLQuery1.sql - SQL Operations Studio

The process is just a little distracting to me, especially if I make the pane wider to more easily see the Object Explorer or file list. I didn’t like this in Visual Studio Code when writing PoSh or Python, and I don’t like it here.

Switching Sides

Someone on Twitter posted a couple neat tricks, one of which was moving the panes to the right side. I know some panes in SOS, like the connection one, are always over there, but you can move the main panes.

I’m surprised I didn’t see it, but I really never even thought about this being an option. I was just annoyed.  If I’d looked in the View menu, I’d see “Move side bar right”. If I do that, I get this.

2018-07-09 20_10_49-SQLQuery1.sql - SQL Operations Studio

I could also fine this in the command palette

2018-07-09 20_11_25-SQLQuery1.sql - SQL Operations StudioThe other cool trick doesn’t do much in SOS yet, but it works in Visual Studio Code. I’ll show it there.

If I create a new file, VSCode doesn’t know what I’m doing. About half the time I’m writing Python, but I don’t get any of the intellisense or other features unless I save the file and give it a type.

The other option, is to click the language name in the lower right corner. In the image, I’ve clicked the “PowerShell” and this opens a list of languages. Type “py” and get Python.

2018-07-09 20_13_17-Untitled-1 - Visual Studio Code

Cool tricks. I expect that over time SOS will have more than just the “mssql” is has now. I’d expect MySQL, PL/SQL, and more.


Posted in Blog | Tagged , | 2 Comments

A few fun pics from vacation

A few nice pics from vacation. Posting here as I’ll link from an editorial.







Posted in Blog | Tagged | Leave a comment

The Ideal IDE

When I started working with SQL Server, I spent a lot of time in Query Analyzer and isql.exe. Those were my two main tools, using those to query a database instance in a lightweight manner. At some point Microsoft released Enterprise Manager, which was more useful for some tasks, but overall, I preferred Query Analyzer. Eventually that died away, and we got stuck with Management Studio, which most of us now use. Along the way, I also used DBArtisan, RapidSQL, and a few other IDEs for writing code against a SQL Server.

These days we have a few choices for doing development and administration on the Microsoft data platform. There is still SSMS, but Visual Studio has gotten quite a few upgrades and extensions to allow work with everything from a local SQL Server to a cloud database to data lakes and more. Microsoft built a lightweight IDE in Visual Studio Code, and released a SQL Server extension for that tool. In the last year, we also saw a preview release of SQL Operations Studio (SOS) from Microsoft, and perhaps this is the direction that Microsoft is moving in the future. There are also other IDEs, such as DataGrip, that some people are using.

I’m still stuck in the the SSMS mode. Even when I use Visual Studio for SQL Server work, with something like SQL Change Automation, I often switch back to SSMS for lots of my work. I’ve done some work in SOS, but I don’t love the experience overall. Since I have SSMS running most of the time, the speed of SOS isn’t helpful. If I were shutting down and restarting SSMS often, I might feel differently.

Today I’m curious. I’m sure you all have preferences, but if you could choose only one IDE, what would it be? Let’s imagine that we’re not looking at the current state of the tools, but for whatever functionality you need, whether that’s database development tools, AG management tools, scheduling tools, etc., all of the functionality would be added to VS, VSCode, SSMS, SOS, DataGrip, etc. In that case, what do you prefer?

I think I’d lean towards keeping SSMS, though I wish it were more open and extensible. Since that’s not likely to happen, I think SOS might be my next choice as an IDE if it has lots of extensions, and I have the ability to enable or disable them for the functionality I need.

Steve Jones

The Voice of the DBA Podcast

Listen to the MP3 Audio ( 3.7MB) podcast or subscribe to the feed at iTunes and Libsyn.

Posted in Editorial | Tagged , | Leave a comment

Refreshed and Back from Vacation

It was a nice break to get away from work for a couple weeks. My family and I traveled 2,000+ miles to Glacier National Park. We camped out each night, and managed to get to both Yellowstone (briefly) and Glacier. Obligatory pic below.


For the most part, I was unwired. There were plenty of places were traveled each day where no connectivity was available. My cell phone was mostly used for pictures, with the “No service” text at the top while in most of the national parks.

Lots of hiking, and some horseback riding. My wife even managed to get me on a horse one day.


It was nice to get away, and a little strange to arrive back in a place with more concrete and people than trails and wildlife.

Going through email and quite a few requests that came in over the last two weeks, as well as starting to prep for SQL Saturday Baton Rouge this weekend. Back in the saddle, as they say, very quickly this week.

Posted in Blog | Tagged | Leave a comment

Will Terminators Be Required?

I was looking at an article the other day and noticed that there was a CTE sample with the semicolon on the line before the code. I’ve been seeing this convention for years, starting your CTE with a semicolon because people aren’t sure this will get dropped in a batch with other code. It’s not that the CTE needs this, but the previous statement needs to be terminated. There are a few other T-SQL constructs that require any previous statements to be terminated, and as a result, we have a series of strange publishing conventions for sample code.

I really wish that the language designers had thought this through and stopped trying to overload and reuse keywords. We could have avoided this with a simple CTE language element to indicate the structure. I know, I know, there are other considerations, but this seems annoying. I’m sure that the addition of the CTE fully expected that at some point semicolons would be required for all code.

Brent wrote about this a few years ago. The Syntax page for T-SQL currently says this about the semicolon: “Transact-SQL statement terminator. Although the semicolon is not required for most statements in this version of SQL Server, it will be required in a future version.” There is no shortage of confusion about where terminators might be required and how to structure code, partially because SQL hasn’t ever used terminators and the evolution of the language has been a bit inconsistent with regard to structure.

These days it seems that nothing will ever be removed. It appears that nothing else will be deprecated in this age of cloud software and feature toggles.I suspect at this point that we’ll see features wither in the codebase, not receiving future development if Microsoft doesn’t see them as valuable, living in limbo forever.

I don’t think we’ll ever see terminators required, and as the amount of legacy code grows, it becomes less and less likely they will become mandated.

Steve Jones

The Voice of the DBA Podcast

Listen to the MP3 Audio ( 3.2MB) podcast or subscribe to the feed at iTunes and Libsyn.

Posted in Editorial | Tagged | Leave a comment

Republish: Is SQL Server Mature?

Last day of holiday, so republishing Is SQL Server Mature?

Posted in Editorial | Tagged | Leave a comment

Republish: CI and CD Aren’t Magic

Almost done with vacation, but a few days left. Republishing CI and CD Aren’t Magic

Posted in Editorial | Tagged | Leave a comment

Republish: Have You Been Hacked?

Still away, so republishing: Have you been hacked?

Posted in Editorial | Tagged | Leave a comment

Republish: What’s a Toaster?

A second republish today, but it’s one of my favorites: What’s a Toaster?

Posted in Editorial | Tagged | Leave a comment