Category: Blog

  • Brain Exercises: Fun Away from Work

    I do like using my brain and trying different activities. Trying to solve T-SQL puzzles, or writing some code, or even playing some games that require me to think.

    Recently my wife and I took a cruise. We’ve done this before and one of the things we’ve enjoyed it the trivia contests. They’re fun and they tax your memory a little, and reveal how much you know about the world around you. A few years ago we (with my son) won one of the contests and got a pin. This time we were hoping to repeat as winners at least once during the week.

    We learned there are lots of smart people. We tried a few different contests and were close, but multiple questions away from winning. There are usually 16 questions, of various points, and we often knew 10-13, but often multiple teams fared better. Especially with the last, bonus question, which was worth more points. A few things we didn’t know:

    • Italian snack food made in 600AD inspired by children praying (pretzel)
    • how many stars are on the New Zealand flag (4)

    We did get a few things right

    • Australian snack made from leftover brewers yeast (vegemite)
    • honey never spoils (true)

    One of the days had a Michael Jackson theme. We are big fans, and as we listened to the songs, we knew most of them. The one we didn’t know, and in fact only one of the 25 or so teams knew, was Liberian Girl. One that my daughter knew, which none of us did, was Chicago. That was the bonus question and we needed it as we won by one point.

    We got a sticker for the win, which was fun, but it was nice to stop and try to think under pressure, but not too much pressure.

    20260526_190614

    We won a second time, this one with TV Show intros. That was truly a group affair. I didn’t know many, but between my wife, my daughter, my son and his finance, we tied with 19/20 points with 2 other teams. We got a tiebreaker, and my son recognized the OC Theme, which one one else knew and I got a second sticker.

    This makes me think I ought to do some trivia at a Day of Data sometime.

  • A Career of Memories

    Annabel retired from Redgate Software this week. Across most of my career at Redgate, I’ve participated in many events, some we hosted, some we sponsored. At most of these events, Annabel has been a part of organizing, financing, executing (or all three) the events with me. From SQL in the City to SQL Saturdays to Redgate Summits to the PASS Summit, she and I have been in so many cities and venues around the world.

    2026-06_0155

    She has become a dear friend, and someone I look forward to seeing. A friendly face, a supportive friend, a joy to be around.

    I’m happy for her future, sad she’s moving on, and grateful for the time we shared together. I look forward to quiet lunches and drinks, but will miss the chaos of travel and events.

    I have so many memories across the years. Annabel might be the person I’ve worked with the most in my career. We’ve stood on stages together. I don’t have a picture of us, since I’m often on stage, but here she is with Kendra.

    2026-06_0154

    We’ve prepped for broadcasts

    2026-06_0166

    and she’s delivered the openings.

    2026-06_0162

    We’ve celebrated after events in the US

    2026-06_0149

    In Australia

    2026-06_0156

    We’ve had so many smiles, together

    2026-06_0158

    and with friends.

    2026-06_0157

    We’ve sat in meetings (clearly she’s not as excited a Becky)

    2026-06_0152

    We’ve had so many group shots

    2026-06_0165

    We’ve had fun

    2026-06_0161

    We’ve worked ourselves hard

    2026-06_0153

    We’ve celebrated family

    2026-06_0150

    And we’ve even gone to a deserted island

    2026-06_0164

    If you’ve enjoyed a Redgate event, you likely have Annabel to thank.

    I wish her well in retirement and I look forward to hearing how wonderful life is over lunch in Cambridge this fall.

  • No Shortcuts for the SQLCMD Batch Terminator: #SQLNewBlogger

    I was messing around with SQLCMD and I realized something I hadn’t known. I’ve never tried it, but the batch separator has to be separate, which I’ll show.

    Another post for me that is simple and hopefully serves as an example for people trying to get blogging as #SQLNewBloggers.

    The Batch Terminator

    The default batch terminator in SQL Server tools is “GO”. We tend to use this in SSMS, and many of us know to type this in SQLCMD when we use it. In SSMS, we sometimes need it. Here’s an example where I create a proc and add a RETURN, which some people think means the proc ends.

    It doesn’t.

    2026-05_0092

    The SELECT @@VERSION is a part of the proc. Now, if I drop the proc and then add a GO at the end of a line, , I get this:

    2026-05_0093

    Makes sense. Let’s try two commands. In this case, the GO is skipped and I get two results.

    2026-05_0094

    Using SQLCMD

    If I run SQLCMD and enter that code, I get a new prompt. That’s because the batch separator in SQLCMD is a batch terminator. This is in the SQLCMD docs, and since I haven’t terminated a batch, nothing happens.

    2026-05_0095

    If I hit enter, I get a new prompt. This continues until I enter a go.

    2026-05_0096

    Once I enter Go, I’ll see my results.

    2026-05_0097

    A good thing to know, as you might think you can enter “select * from @@version go” and think it might execute. It won’t, as you see below:

    2026-05_0098

    This isn’t likely a problem for most people as they’ll instinctively enter GO if something doesn’t run, but newbies might miss this.

    SQL New Blogger

    This was about a 10 minute post, based on an experiment to see if I could get something to run quickly. Since I ran the experiment, I captured some screenshots and built this post.

    Showcase continued learning, especially in this era of AI where you might need to guide an LLM along a better path.

  • AI Experiments: Parsing Payment Memos

    As part of my running the SQL Saturday charitable foundation, I get sponsorship money from vendors. Primarily Microsoft and AMD, but I hope to change that in the future. In any case, I recently got a payment notification that my invoice had been paid.

    I knew I had a few invoices outstanding, so I wasn’t sure what was included. MS tries to bundle payments, but I don’t get an email for each one. For this one, I didn’t see an email, so I suspected I’d put the wrong one in or typo’d it.

    The Usual Process

    When I get payments, I have to reconcile those in my General Ledger, recording the amount and allocating to the events. I then send out payments to the event organizers and record those.

    This is a mostly manual process, but since I sometimes submit multiple invoices at once, I have to figure out what was paid. I could submit 3 invoices and get 1, 2, or 3 payments. Microsoft Finance usually bundles things, but since I can have a lot of events in flight, I need to know where money gets allocated.

    In this case, I didn’t see an email and didn’t want to log into the invoice system and start finding the various invoices paid and clicking through details. Instead, I logged into the bank to verify the amount and I saw a memo. It was something like this (I’ve changed a bunch of data in here.

    2026-06_0123

    I thought it would be obvious which invoices were paid, but I couldn’t quickly figure this out. I decided to turn to AI.

    AI to the Rescue

    First, I knew I had a “no training” AI plan with Claude, so I wasn’t concerned about data release here.

    I had this prompt and then pasted in the data: “can you help me separate this by ? and make sense of what is included?”

    The result was interesting, and useful. It labeled this task as EDI 820 parsing, so apparently this is EDI format. The last time I worked with EDI is was XML based, but perhaps this is the new way of doing things.

    The results were great. I got a summary, none of which I needed, but good to know this was easily recognized and parsed.

    2026-06_0124

    The really interesting part was below some of the acronym descriptions, where my invoices were found.

    2026-06_0125

    I knew this would be certain events, but wanted to double check the numbers. When I put in an invoice number, I use the date and event. Here I got 3 of my events (1146, 1154, 1134) paid from a day where I invoiced 5 events. This let me quickly enter my GL and also know to whom I was sending money.

    A cool time saving AI trick. Rather than 10-15 minutes to reconcile things, AI gave me answers in seconds and I had fixed the GL in a couple of minutes, allocating the funds to events.

    Of course, I needed to ensure data security with my plan and I verified these were events where I had planned to send money. Still me as the expert reviewing things and making decisions, but way easier than trying to sort out invoice numbers from a bunch of EDI text.