DH2i’s DxConsole can reduce license cost and complexity and enhance availability in Microsoft SQL Server implementations—on-premises, virtualized, and non-virtualized—and allow you to fail over to the cloud.

In modern application stacks, the relational database is often the one piece that doesn’t easily scale out to multiple redundant servers. Whilst NoSQL databases may be useful for some applications, the bulk of applications have used and continue to use relational databases such as Microsoft SQL Server.

When an application is speaking to an SQL Server database, the connectivity is hard-coded in a “connection string,” which ties the database to a Windows Server. If that server goes down or becomes unavailable, the connection is broken until it comes back up again.

The alternative is MS SQL Server clustering, which, for a single connection string, allows both load sharing and high availability across a two-node cluster in Standard Edition, but which for multinode clusters requires Enterprise Edition licences for SQL Server.

For many SQL Server applications, the capacity of modern hardware has grown faster than the load on the database. As such, SQL Server clustering’s ability to share an individual database load across multiple servers isn’t that important; what’s key is the high availability and the ability to consolidate and manage a large number of databases on a single pooled hardware resource.

Enterprises with large numbers of SQL Server databases will typically take one of three approaches to managing large numbers of SQL Server instances:

  1. Invest in a large-scale SQL Server cluster using Enterprise Edition.
  2. Build and manage a number of two-node clusters.
  3. Reduce the impact of individual server failure by isolating each SQL Server instance in a separate virtual machine, and invest in management tools to reduce mean time to recovery for failed instances.

DxConsole gives you another option by leveraging any shared storage or storage replication in the environment. Basically, if an SQL Server instance fails, it will fire up another SQL Server instance pointed at the same shared storage, and the application will continue where it left off (modulo any uncommitted transactions). The application does not need to know what is going on, because DxConsole virtualizes the connection string. As such, the existing connection string continues to work, and as far as the application is concerned, there has just been a short delay. SQL Server will deal with ensuring the ACID properties of the transactions so that the database comes back in a consistent state. If the application is in the middle of a transaction, there may be a commit failure, but applications need to deal with these anyway for things like lock timeouts, etc.

DxConsole manages a number of servers as a pool and will redistribute SQL Server instances across multiple servers when one fails. It can also be used to balance load across the pool, although load is balanced at the instance level, not at the transaction level.

  • If you have invested in Enterprise Edition, you can revert to the cheaper Standard Edition and manage the pool of servers using DxConsole.
  • If you’ve created a large number of two-node clusters or have isolated each SQL Server instance in its own virtual machine, DxConsole gives you the opportunity to reconsolidate SQL Server databases onto a smaller number of larger VMs (or even physical machines). This can reduce complexity and some licensing costs for management software, perhaps allowing you to move to Hyper-V rather than VMware.

As of 2014, DxConsole allows virtualization of the connection string across multiple subnets, which allows you to manage clusters in the cloud as well as on-premises. In combination with storage replication options, which Bob Plankers has been posting about recently on this site, this can allow applications to fail over into the cloud. Depending on the replication delay and whether you replicate synchronously or asynchronously, you may lose some transactions—but DxConsole can certainly provide part of a relatively simple option for Disaster Recovery.