Below I’ve listed 22 questions to consider when deciding where a new SQL Server database should be deployed given the four main options of:
- Add Database to existing Instance
- Create separate Instance for Database
- Create separate VM for Instance and Database
- New physical machine needed
There’s no hard and fast rule for determining where a database should go however there are often a lot of limitations dictating your choices. I’ve started the list with a big limitation, money.
If you want to use the list like a score card I’ve prepared one called “New Database Hosting Environment Assessment Form”, I know not the snappiest of titles.
Use: I’d recommend stepping through the questions with the requester while gathering feedback. You can then fill in the option scoring with weighted figures or simply use the boxes to record notes. The main deliverable of the form is you will have some documentation that demonstrates the location for the database was assessed and the logic and reasoning for the location chosen has been recorded.
Of course consider adding additional questions relevant to your case to the form. If you think your additional questions would be relevant to everyone deploying a new database free to forward your questions on to me and I’ll include them in the form.
The form can be downloaded here link.
Question 1: Can the business afford a new physical machine?
Considerations: If the financial resources are not available option four
can be eliminated.
Question 2: Are there OS or SQL Server Licensing restrictions?
Considerations: If there are no restrictions to a new VM with it’s own instance this will likely offer the most scalable solution and produce the best performance. If restrictions exist options are limited to 1 & 2.
Question 3: Is the Database the back end for a stand-alone application?
Considerations: The back end for a stand-alone application should be isolated as much as possible from other impacting factors. The higher the number of the option chosen the better.
Question 4: What is the primary purpose of the Database?
Considerations: What is the business use\s and in what capacity will the database function i.e. Transactional Db, Reporting Db, Datastore?
Question 5: Do you want\need to be able to limit access to hardware resources?
Considerations: Access to resources, ram etc. can only be limited at an instance level. Option 1 cannot be used.
Question 6: Are there any SQL Server Service Pack dependencies?
Considerations: SQL Server can have different SPs on different instances but cannot have different SPs for different databases within an instance.
Question 7: What is the current excess capacity of the hardware?
Considerations: Can the Hardware handle the additional workload? If not either reduce resource consumption of resources on the hardware, add RAM and/or cores or choose option 4.
Question 8: Is there a VM capacity restraint on the hardware?
Considerations: Can the hardware actually host a new VM without a trade off in resources or a decrease in performance? If restrained option 3 cannot be used.
Question 9: What is the VM capacity?
Considerations: Is the OS already maxed out on resources? Can the VM handle the additional workload?
Question 10: Is there an expected increase in size and usage in the Database over time?
Considerations: If known and minimal option 1 can be used. If unknown or unlimited the higher the number of the option chosen the better.
Question 11: Is the resource usage of the new Database known?
Considerations: Benchmarking RAM, CPU and bandwidth usage should be carried out prior to installation.
Question 12: What are the disaster recovery requirements?
Considerations: Should the databases that share common dependencies be hosted on
the same server?
Question 13: What is the required operational up time? 24/7 etc.
Considerations: Does this operational run time tie in with the rest of the databases
on the instance, or the instances hosted on a VM or physical server?
Question 14: What are the Maintenance requirements?
Considerations: Will new index rebuilds etc. take a long time and effect the schedule of the instance overall?
Question 15: What are the Backup requirements?
Considerations: Will the backup schedule of the other databases be impacted
by the addition?
Question 16: Is the Database functionally similar or supporting databases currently on the instance?
Considerations: Does the new Database logically fit in with the database/s currently running on an instance?
Question 17: Have server security concerns been addressed?
Considerations: Will people with administrative access to the server have access to a Database and data they should not be able to see?
Question 18: Does hosting particular databases together compound the potential
damage If an unauthorised person was to gain access to the server?
Considerations: Will an unauthorised person have access to data that represents a major security breach if the data is combined from different databases?
Question 19: Does a vendor have control over the instance or server?
Considerations: Will putting a Database on a particular instance leave you at the mercy of a vendor?
Question 20: Will stacking instances make tracking down performance issues across
the VM difficult?
Considerations: Will this create a server level noisy neighbour problem?
Question 21: Will packing databases too densely make tracking down performance issues across the Instance difficult?
Considerations: Will this create an instance level noisy neighbour problem?
Question 22: Will moving the Database to be hosted somewhere else in the
future be possible?
Considerations: Does this decision need to be gotten right the first time?
1 thought on “How to determine where a new database should be deployed”