Category: Blog

  • 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.

  • The Book of Redgate: Taking Breaks

    We work hard at Redgate, though with a good work-life balance. One interesting observation for me (as an American) is how well most of the company in the UK works normal hours and rarely works outside of those.

    However, sometimes we do find people, especially engineers, heads down and very focused. With our engineers in the office a day or two a week, they might end up coding in a group and trying to solve a challenging issue.

    We used to have engineers working more than 8 hours regularly, often late, when they were in the office. I came across this page in the Book of Redgate.

    2026-04_0229

    The text below is: Working too hard? Why not relax with a gentle game of ping-pong.

    Our offices have always had some game tables. I don’t think we have ping pong in the new office, but we have a pool table near the coffee machines and I’ll see people taking a few minutes to play a game at different times. We also (I think) still have a foosball table.

    We have a piano upstairs, and some guitars in the foyer. I usually take a few minutes between meetings and strum some songs. Here’s the view I have most days when I’m in the office, a few minutes at a time.

    20260121_094507

    We’re not afraid of resistant to working hard. We just try to take breaks and find balance.

    I have a copy of the Book of Redgate from 2010. This was a book we produced internally about the company after 10 years in existence. At that time, I’d been there for about 3 years, and it was interesting to learn a some things about the company. This series of posts looks back at the Book of Redgate 15 years later.