Many a times we come across a scenario where we need to execute some code based on whether a Database exists or not. There are different ways of identifying the Database existence in Sql Server, in this article will list out the different approaches which are commonly used and it’s pros and cons. I prefer using the DB_ID() function as it is easy to remember. Let me know which approach you use and reason for the same.
To demo these different approaches let us create a sample database by the below script:
CREATE DATABASE SqlHintsDB GO
[ALSO READ] How to check if a Table exists
Approach 1: Using DB_ID() function
We can use DB_ID() function like below to check if SqlHintsDB database exists. This is the simplest and easiest approach to remember
IF DB_ID('SqlHintsDB') IS NOT NULL BEGIN PRINT 'Database Exists' END
[ALSO READ] How to check if a Stored Procedure exists
Approach 2: Using sys.databases Catalog View
We can use the sys.databases catalog view to check the existence of the Database as shown below:
IF EXISTS(SELECT * FROM master.sys.databases WHERE name='SqlHintsDB') BEGIN PRINT 'Database Exists' END
[ALSO READ] :How to check if a View exists
Approach 3: Avoid Using sys.sysdatabases System table
We should avoid using sys.sysdatabases System Table directly, direct access to it will be deprecated in some future versions of the Sql Server. As per Microsoft BOL link, Microsoft is suggesting to use the catalog view sys.databases instead of sys.sysdatabases system table directly.
IF EXISTS(SELECT * FROM master.sys.sysdatabases WHERE name='SqlHintsDB') BEGIN PRINT 'Database Exists' END
[ALSO READ] :
How to check if Temp table exists
How to check if a record exists in table
How to check if a Table exists
How to check if a Stored Procedure exists in Sql Server
How to check if a View exists