Tag: syndicated

  • The Redgate Summit: New York

    The final 2024 Redgate Summit in the US takes place in a few weeks, on Aug 21. Redgate Summit: The Database Landscape is coming to the Microsoft Office at Times Square in New York City and I’m excited to be going.

    You can register today and join us for a full day of learning about DevOps, database development and management, and how to build better software. We have three tracks, each full of events for the day.

    • New and Future Technologies
    • Deep Dive Solutions
    • Leadership

    We have both Redgaters and industry experts on hand to deliver a wide range of sessions and panels. I’m not sure what I’m doing yet, but I’m sure I’ll be assigned a few of the TBD speaker slots.

    Hopefully you can come enjoy a fun day in Manhattan in a few weeks. Tell your boss you want to learn how to better build and manage database software and head to the City. Then register and say hi to me in a few weeks.

  • A New Word: Bareleveling

    bareleveling – v.  trying to improve yourself without anyone else knowing about it, afraid that they’ll think it’s silly or grandiose or unnecessary, or that they’’ll end up calling too much attention to your efforts, transforming a casual tweak into a flashy rebranding campaign.

    I certainly engage in bareleveling. I bet a lot of you, especially musicians or singers, barelevel all the time. You practice and work, but don’t want anyone to know. I do that, though I’ve gotten better at playing my songs and not being too worried about how other perceive me. Having a guitar in the lobby of Redgate HQ has helped.

    However, I’ve stopped short of traveling with a guitar. I might if it’s my wife and I, but if I have to present or visit a customer, I don’t want to be carrying a guitar around. Mostly I don’t want anyone to make a production or ask me to play when I might be focused on something else.

    Hopefully you do some bareleveling in your career as well, though be sure you are getting some feedback from someone that ensures you’re improving in the ways that matter to you.

    From the Dictionary of Obscure Sorrows

  • Finding Where xp_cmdshell is Used

    I saw a post recently where someone was concerned about where xp_cmdshell was in use inside their system. They felt it was a security risk, and decided to get rid of it. I don’t agree with that, and I think xp_cmdshell can be safely used, by restricting who can run it.

    That being said, I was happy to help. I saw someone say search in sys.modules, but that’s not enough. This post looks at what I thought was a better solution.

    When you run a query like this one, you only search in the current database.

    SELECT definition

    FROM sys.system_sql_modules

    WHERE definition LIKE ‘%xp_cmdshell%’;

    This is fine if you’re concerned here. If I run this on a sample database, I find this:

    2024-07-23 14_01_26-SQLQuery1.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (70))_ - Microsoft SQL Server

    However, that misses a few things. First, system_sql_modules isn’t everything. In this case, I have a proc that runs xp_cmdshell that doesn’t show up. I need all_sql_modules. This has user stuff. If I run that, I see this.

    2024-07-23 14_03_06-SQLQuery1.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (70))_ - Microsoft SQL Server

    However, that’s one database. What is better?

    All databases.

    To do that, we’ll use the undocumented, but useful, sp_msforeachdb. In this, I can run code as a parameter. I can do this:

    EXEC sp_msforeachdb  ‘use ? SELECT definition FROM sys.all_sql_modules WHERE definition LIKE ”%xp_cmdshell%”;’
    GO

    The problem is I see this:

    2024-07-23 14_05_14-SQLQuery1.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (70)) Executing..._ - Microso

    In the 4th result set, where are these things?

    A better piece of code actually tells me which database is in use.

    2024-07-23 14_06_05-SQLQuery1.sql - ARISTOTLE.sandbox (ARISTOTLE_Steve (70)) Executing..._ - Microso

    Here’s the code I ran. Note that I use the current database parameter, the question mark, in the SELET as well as the USE.

    EXEC sp_msforeachdb  ‘use ? SELECT ”?”, definition FROM sys.all_sql_modules WHERE definition LIKE ”%xp_cmdshell%”;’
    GO

    That gets me code inside databases, except for one place. What about jobs? I need this code:

    USE msdb
    GO
    SELECT s2.job_id, s2.name, s.step_name FROM dbo.sysjobsteps AS s INNER JOIN dbo.sysjobs AS s2 ON s2.job_id = s.job_id
    WHERE command LIKE ‘%xp_cmdshell%’

    These two queries will get me the places I’ve used xp_cmdshell.

    As long as I haven’t encrypted procs/functions. In that case, I need SQL Compare.

  • DevOps Days Minneapolis

    Once again, I’m off to a conference next week. This time it is DevOps Days Minneapolis. I haven’t been to a DevOps Days event, though I always enjoy DevOps events because the attendees and speakers are very passionate about building better software faster. Some of them have great stories and experiences (and successes), while many also struggle with the same restrictions, priorities, and lack of attention to quality that most of us do.

    In any case, this is a fairly small event, but I like Minneapolis and I’m looking forward to the trip.

    If you’re coming to the event, say hi. If you can’t, there are lots of other DevOps days events coming up.