Tag: Redgate

  • Static Code Analysis Feedback for Operations with SQL Monitor

    One of the challenges with managing a production database is that the code that gets deployed sometimes causes lots of problems. Often a production DBA or sysadmin gets called about problems that they didn’t cause, and can’t necessarily fix.

    Helping developers learn what the impact of their code is, and if it is following good practices, is something many of us would like to do, but often don’t have the time, or a good report that we can easily pass on.

    I saw recently that the SQL Monitor team had deployed a new feature to the product that makes this a bit easier. They have incorporated the code analysis from SQL Prompt into SQL Monitor, which you can see at  https://monitor.red-gate.com/overviews/sqlmon-vmw-bm.red-gate.com/cluster/workload01.smdemo.local/sql/demo#?Zoom=1619213137440%2C1619220337440&MaxTime=1619220337440&Present=true

    I’ve linked to one of the workload demo systems being monitored. If you look at the top 10 queries, and pick one, you’ll see something like this:

    2021-04-23 17_26_30-demo - Server Overview — Mozilla Firefox

    Just below the query text, there is a blue lightbulb (for a new feature) and the text: SQL Monitor has identified 2 issues with this query. Addressing them could improve performance.

    Clicking the link gives you the issues. In this case, these are code smells that I’d want a developer to address. Having a TOP without any ordering could confuse clients, but it also might mean we are gathering the wrong data, since there isn’t a guarantee on which 10 rows come back.

    2021-04-23 17_26_41-demo - Server Overview — Mozilla Firefox 

    You can screen shot this, or send this link to developers, and ask them to fix this code for the next deployment.

    SQL Monitor has become an impressive product over the years, and with multiple teams adding to it now, it is constantly evolving to meet the needs of our customers. If you haven’t tried it, consider an evaluation before you purchase a monitoring tool (or before you build one).

  • Help Build an Amazing Summit in 2021

    For a good portion of my career, I’ve been going to the annual Summit in the fall with lots of my fellow SQL Server/Data Platform professionals. I have been to 16 or 17 before last fall’s virtual one.

    This year, Redgate has purchased the trademark and brand for the Summit, and they are looking to run a virtual event in the fall. Like many other events of the last year, this will be free, and I’m excited to see how this goes.

    Redgate is looking for feedback from those of you that have attended Summits in the past, trying to understand what worked well and what didn’t. They are looking to create a memorable event and evolve the Summit into something better in the future.

    Fill out the survey before Apr 15 and you could win a Peloton bike. Not a bad prize for sharing some thoughts on an event I suspect many of you enjoyed and would like to see come back.

  • Running Scripts in Parallel with SQL Multi Script

    One of the lesser known tools in the Redgate Toolbelt is SQL Multi Script. While few customers used it, those that did loved it, as it solves a problem that many people have: deploying a script to a lot of servers at once. While Central Management Servers help a little here, they don’t quite have all the features of Multi-script, which is not only a management, but a deployment tool as well. With companies using sharding and multiple systems for clients, this is becoming more important all the time.

    A few years ago a customer asked me if we could make this run faster. At the time, we had limited the tool to 25 threads at a time, which made sense when it was developed. However, with modern hardware, I asked the developers to remove this limit. This was an easy change, and now you can scale up your script execution.

    You can do this with the “Application Options” in the menu. As you see below, parallel execution is enabled.

    2021-03-24 09_59_07-Application Options

    What’s more, this value is dynamic. If you start executing this agaisnt a series of databases and need to scale up or down, you can change this value and it will take effect immediately.

    If you’ve never given SQL Multi Script a try, and have the need to run scripts against a lot of servers, give it a try. It’s a little known, but incredibly valuable, tool.

  • Filtering SQL Compare to a Schema

    One of the things that numerous clients have some to Redgate about is allowing a team of developers to work on a single shared database without creating conflicts. While this isn’t necessarily a simple thing to do, it is easy if you structure the projects appropriately. This post looks at one of those ways, with schema filtering.

    In a recent case, a customer had multiple schemas, and they wanted a SQL Change Automation project scoped to a single schema. Easy enough to do, as a new project gives you a place to pick your filter, but in order to do that, you need to create it first in SQL Compare. This post looks at how to do that.

    The Scenario

    I created a demo database with a couple schemas inside, and a few objects inside. I had a blank database to simulate a new QA environment. I opened SQL Compare and created a new project, pointing to these two databases. From here, I want the initial comparison. you can see this below, with a number of objects listed in different schemas.

    2021-03-12 17_09_13-SQL Compare - E__Documents_SQL Compare_SharedProjects_(local)_SQL2017.SimpleTalk

    On the left is the filter pane, and near the top is a “Custom filter rules” link. I clicked this to open up the filter dialog. In here, I see a default set with no rules.

    2021-03-12 17_10_21-Edit filter rules

    I added a new rule to set the schema name equal to “Sales”, to filter all objects away that do not exist in Sales. This is to give me a “Sales” project that developers can use in this schema.

    2021-03-12 17_10_30-Edit filter rules

    I click OK, and then I refreshed the comparison. I saw this:

    2021-03-12 17_11_48-SQL Compare - E__Documents_SQL Compare_SharedProjects_(local)_SQL2017.SimpleTalk

    I still have the Inventory schema listed. That’s not ideal, as this could be confusing to juniors developers. Also, depending on the comparison options, this could allow dependent objects to leak into this project.

    Filtering Schemas

    Schemas are not owned by themselves, and are separate. As a result, I need an additional item in this filter. If I scroll down the left side, there is a “schema” checkbox. If I put my mouse on this, I can see that there is an “edit” link.

    2021-03-12 17_13_24-SQL Compare - E__Documents_SQL Compare_SharedProjects_(local)_SQL2017.SimpleTalk

    I click that and then create my filter rule. In this case, I want the “Object name” to equal Sales. The object is the schema.

    2021-03-12 17_14_22-Edit filter rules

    Once I click OK, the Inventory schema disappears.

    2021-03-12 17_15_08-SQL Compare - E__Documents_SQL Compare_SharedProjects_(local)_SQL2017.SimpleTalk

    I need to repeat this for each schema that I want to build a filter for. Note that there isn’t a “save as” for filter files, so I need to manually copy each one in the file system when it is complete, or create a new SQL Compare project.

    Summary

    Once I have the filter files, I can load the appropriate one into each SCA project, allowing me to have projects that only see a small portion of the objects in a database.

    One other thing I often do here is remove global type objects, like users, from the project as well by unchecking those boxes in the filter pane.

    SQL Compare is an amazing tool that underpins much of what makes DevOps tools and automation work well with Redgate tools. I’d urge you to give it a try if you never have. You’ll be amazed as how much is helps you get work done quickly.