Multi Script Removes 25 Database Limit

I woke up to a Slack message that alerted me to a post in one of our channels. An engineer noted that SQL Multi Script was being upgraded today, releasing to all channels with v 1.3.3. The post alerted me to not the release, but the fact that the 25 database limit (for parallel execution) has been removed.


That’s one I’ve been asking for across quite a few years. We don’t have a lot of Multi Script customers, but there are still quite a few and across time, I’ve had many of them ask me to remove the limit.

Some have 30, 40, 50, 100 separate servers on which they want to run a query. Some have hundreds of databases on which they need to deploy the same code. All of them have struggled a bit with the need to run Multi Script many times to reach all their databases, with no good reason as hardware has improved and many of them have 16 GB of RAM. Back in 2007, when Multi Script was first released, most people likely had 2 or 4GB, and much slower CPUs.

With my advocacy, and a few salespeople, plus some reorganization internally, we were finally able to press the engineers to dig into this code and remove the limit. This is good news for customers. It’s also good to have

If you’ve never tried SQL Multi Script, give it a go. It’s a handy tool that I think is much better than a CMS. If you own a SQL Toolbelt license, you have Multi Script. If you don’t, grab a trial and see how this might help you.

About way0utwest

Editor, SQLServerCentral
This entry was posted in Blog and tagged , . Bookmark the permalink.

2 Responses to Multi Script Removes 25 Database Limit

  1. Doug Tucker says:

    Could you please use your advocacy to encourage the developers to add Multi Script functionality to the DLM Automation suite?

    The last step in my deployment process is still a very error-prone manual process. Once the change script is crafted, it’s got to be executed against 4000+ databases hosted on 12 production servers, which I perform manually using Multi Script.

    To speed things up, I launch 10 copies of Multi Script, one per server, each executing the change script against ~350 databases (two more servers get run separately). I’ve tried duplicating this process using DLM functions within Powershell loops, but the performance degrades by orders of magnitude, even when using Powershell’s “multithreading” options of background jobs or runspaces — nothing can compete with Multi Script.

    Ideally, I’d like to be able to invoke: Use-DlmDatabaseRelease -DeployToList

    • way0utwest says:

      I can ask, but likely we won’t do a lot of work here. 4000+ databases is an edge case. The vast majority of people don’t do this, so building a tool or doing the work on performance to make this work, is not really commercially viable. You certainly could use multiple agents that all pull the same package and run the DLM stuff to various targets. We could potentially implement something like this, but since there are a variety of ways to do this, we’d end up with other customers complaining the same way you are.

      Ideally I’d like

      GetServerList | Use-DLMDatabaseRelease

      That’s what I want. Pass a list along to the object. There are loops and ways to do this in PoSh, and they don’t scale. I don’t know if we’d add parallel stuff to DLMA, but I’ll ask.

Comments are closed.