SQL Server System Databases - Basic Concepts

SQL Server System Databases - Basic Concepts

Understanding various SQL Server system databases and their roles is an excellent aid for managing your SQL Server instance.

Introduction

The SQL Server design implies a one-to-many mapping between the database engine (instance) and the databases hosted on the instance. It means that you can deploy several databases on one instance of the SQL server. According to the Microsoft documentation, you can have up to 32767 databases on a single instance of SQL Server. Of course, there will be limitations, like the resources on the server, managing concurrency on TempDB, network traffic, etc.

Databases deployed on a SQL Server instance can either be System Databases or User Databases. System Databases come installed with the instance. In this article, we will discuss the purpose of each System database. Also, we’ll clarify what you need to care for when managing system databases on SQL Server.

Overview of System Databases

System databases are a part of many processes taking place when you install an instance of SQL Server. By default, these databases are created in the following paths:

 %programfiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA 

and 

%programfiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log 

The path can be different. During the installation of SQL Server, you can specify the location of the system database files. 

To list all the system databases in an instance, you can invoke the code in Listing 1. Listing 2 can be used to determine the location of the datafiles associated with the system databases. Note that in both scripts, we use a filter returning databases with database_id of 5 or higher than 5.

The essential “visible” system databases have database_ids 1,2,3,4 – they refer to master, tempdb, model, and msdb, respectively. There is also an “invisible” database called the resource databases and other system databases created when you enable features like replication.

-- Listing 1: System Databases
select 
name
,database_id
,create_date
,state_desc
,recovery_model_desc
,log_reuse_wait_desc
,physical_database_name
,is_db_chaining_on
,is_broker_enabled
,is_mixed_page_allocation_on
from sys.databases 
where database_id<5;

-- Listing 2: System Database Files
select 
name
,database_id
,DB_NAME(database_id)
,name
,physical_name
,type_desc
from sys.master_files 
where database_id<5;

Figure 1: System Databases

The master Database

The master database is the first database open on the start of SQL Server, containing the following data: 

  • The records of the structure/configuration of the instance and all other databases. 
  • The most dynamic management views that are necessary for monitoring the instance. 

Thus, it has the information necessary for opening all other databases. That’s why it has to be first to open. The question is how to do it. 

The SQL Server startup parameters contain two entries, which define the locations of the master database data and log files. The default startup parameters include only three lines – the third one is the error log file location. When SQL Server starts up, it must be able to write to that error log file. 

The master database opens first. The information stored in the master database, including the configurations defined using sp_configure, applies to open other databases and complete the instance startup process.

Figure 2: SQL Server Configuration Manager

Figure 3: SQL Server Startup Parameters

There are several ways to learn about useful SQL Server system objects, like Dynamic Management Views and Functions. 

For instance, expand the views or programmability nodes for the master database on object explorer. There, review these objects’ names and get more details from Books Online. 

You can also migrate logins from one instance to another. For that, restore a backup of the master database to the destination instance. We’ll describe the specific technique in a separate article.

sql server sql server sql server instance sql server system databases tutorial database

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Introduction to Structured Query Language SQL pdf

SQL stands for Structured Query Language. SQL is a scripting language expected to store, control, and inquiry information put away in social databases. The main manifestation of SQL showed up in 1974, when a gathering in IBM built up the principal model of a social database. The primary business social database was discharged by Relational Software later turning out to be Oracle.

SCHEMAS in SQL Server -MS SQL Server – Zero to Hero Query Master

This is part 3 of “MS SQL Server- Zero to Hero” and in this article, we will be discussing about the SCHEMAS in SQL SERVER. Before getting into this article, please consider to visit previous articles in this series from below.

How to Make Use of SQL Server Graph Database Features – {coding}Sight

The article provides a thorough guide to SQL Server graph databases with their advantages and downsides, cases of use and useful comparisons. Would SQL Server graph database features fit your next project? While you may not know the definitive answer right now, you might be wondering, “What problems does it solve?”.

Restoring the SQL Server Master Database

It is crucial to back up the SQL Server master database daily. Read to know how to restore the master database to the instance.

Welcome Back the T-SQL Debugger with SQL Complete – SQL Debugger

Debug SQL stored procedures and develop your SQL database project with dbForge SQL Complete, a new add-in for Visual Studio and SSMS. When you develop large chunks of T-SQL code with the help of the SQL Server Management Studio tool, it is essential to test the “Live” behavior of your code by making sure that each small piece of code works fine and being able to allocate any error message that may cause a failure within that code.