We want to install multiple instances of SQL Server on a single Windows server. We cannot use VMs because the server is bare metal Windows 2008 R2.

For security purposes we need to ensure that the two instances share nothing, including management, Windows services, accounts, etc. So I guess the question is:

When installing more than one "instance" of SQL Server on a Windows server, what is shared?

  • Emm... Why would the server being bare metal Windows 2008 R2 prevent you from using VMs? It has HyperV. – sharptooth Dec 11 '12 at 9:20

SQL Server instances have separate sets of binaries for each installation. For the base engine, you will have separate SQL Server and SQL agent services that can run under separate accounts. They each have their own configurations and users. This is also true for other components like Analysis Services and Reporting Services if you install them.

There are shared components, including Management Studio, Integration Services, and the SQL Browser service. You can find a full listing of shared components here.

Note, you will have several considerations to make when maintaining different instances:

  • SQL Version consistency (each instance can be of a different SQL version)
  • Memory Settings - Each instance will maintain a memory pool separate from the other instances. You will want to plan out your Max Memory settings for each instance so that the different instances won't compete with each other.
  • Possible CPU contention - All instances will make use of the same CPU cores. You can manage the processor affinity mask if you want to reserve threads for different instances, but I haven't had much of a need for that.

Overall, you'll need to keep in mind that all your instances will be competing for resources on the same server, so balance those resources accordingly.


Almost nothing is going to be shared.

From the perspective of the actual SQL Server services nothing is shared. Each instance get's it's own services and each has their own copies of the actual EXE files.

Only one copy of the management tools is installed, and things like drivers are shared.


Maybe using different windows users to start different sql instances as another layer of security can be good idea. Also you can put MDF files in the separate directories with different windows users being able to access the directory. And start different named instances with different users that can access required MDFs.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.