

Simple script to backup all SQL Server databases
source link: https://www.tuicool.com/articles/fQnI7zy
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Problem
Sometimes things that seem complicated are much easier then you think and this is the power of using T-SQL to take care of repetitive tasks. One of these tasks may be the need to backup all databases on your server. This is not a big deal if you have a handful of databases, but I have seen several servers where there are 100+ databases on the same instance of SQL Server. You could use SQL Server Management Studio to backup the databases or even use Maintenance Plans, but using T-SQL is a much simpler and faster approach.
Solution
With the use of T-SQL you can generate your backup commands and with the use of cursors you can cursor through all of your databases to back them up one by one. This is a very straight forward process and you only need a handful of commands to do this.
How to Backup All SQL Server Databases
- Specify path to store database backups
- Specify backup file name format
- Select list of databases to backup
- Loop through databases
- Programmatically create database backup command using database name, path and file name format
- See attached SQL Server backup script
File Naming Format DBname_YYYYDDMM.BAK
Here is the script that will allow you to backup each database within your instance of SQL Server. You will need to change the @path to the appropriate backup directory.
DECLARE @name VARCHAR(50) -- database name DECLARE @path VARCHAR(256) -- path for backup files DECLARE @fileName VARCHAR(256) -- filename for backup DECLARE @fileDate VARCHAR(20) -- used for file name -- specify database backup directory SET @path = 'C:\Backup\' -- specify filename format SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) DECLARE db_cursor CURSOR READ_ONLY FOR SELECT name FROM master.sys.databases WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases AND state = 0 -- database is online AND is_in_standby = 0 -- database is not read only for log shipping OPEN db_cursor FETCH NEXT FROM db_cursor INTO @name WHILE @@FETCH_STATUS = 0 BEGIN SET @fileName = @path + @name + '_' + @fileDate + '.BAK' BACKUP DATABASE @name TO DISK = @fileName FETCH NEXT FROM db_cursor INTO @name END CLOSE db_cursor DEALLOCATE db_cursor
File Naming Format DBname_YYYYDDMM_HHMMSS.BAK
If you want to also include the time in the filename you can replace this line in the above script:
-- specify filename format SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
with this line:
-- specify filename format SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
Notes
In this script we are bypassing the system databases, but these could easily be included as well. You could also change this into a stored procedure and pass in a database name or if left NULL it backups all databases. Any way you choose to use it, this script gives you the starting point to simply backup all of your databases.
Also, if you wanted to bypass some of your user databases you can include them in the NOT IN section as well.
Next Steps
- Add this script to your toolbox
- Modify this script and make it a stored procedure to include one or many parameters
- Enhance the script to use additional BACKUP options
Last Updated: 2019-05-16
Recommend
-
8
Generate Script of SQL Server Objects – SQL in Sixty Seconds #184
-
13
Script to retrieve SQL Server database backup history and no backups By: Tim Ford | Updated: 2021-10-04 |
-
16
How to Move SQL Server System Databases to a different directory on Linux By: Rajendra Gupta | Updated: 2021-12-23 |
-
8
Microsoft SQL: Abstract Script for Multiple Databases advertisements I need to replicate image catalog records from one ser...
-
8
SQL Server supports exporting data-tier applications (BACPAC). It means that database is packaged to one file with schema and data. It’s not same as SQL Server backups but to backup smaller databases it works pretty well. Those who don’t want to m...
-
9
A Simple Script to Test Whether a STUN/TURN Server is Working Properly
-
7
Backup Databases on Kubernetes With VolumeSnapshots Back to the Blog
-
10
ghost commented
-
4
Introduction: In this blog, we will learn in detail on how to back up SAP HANA databases with HSR enabled (for High Availability purpose) that are running on Azure virtual machines (VMs) to an Azure Backup Recovery Services vault by using...
-
8
Instantly share code, notes, and snippets. ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK