SQL Server Maintenance Solution

SQL Server Backup

DatabaseBackup is the SQL Server Maintenance Solution’s stored procedure for backing up databases. DatabaseBackup is supported on SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL Server 2019, SQL Server 2022, and Azure SQL Managed Instance.

Download

Download MaintenanceSolution.sql. This script creates all the objects and jobs that you need. You can also download the objects as separate scripts. The SQL Server Maintenance Solution is available on GitHub.

License

The SQL Server Maintenance Solution is free.

Parameters

Databases

Select databases. The keywords SYSTEM_DATABASES, USER_DATABASES, ALL_DATABASES, and AVAILABILITY_GROUP_DATABASES are supported. The hyphen character (-) is used to exclude databases, and the percent character (%) is used for wildcard selection. All of these operations can be combined by using the comma (,).

Value Description
SYSTEM_DATABASES All system databases (master, msdb, and model)
USER_DATABASES All user databases
ALL_DATABASES All databases
AVAILABILITY_GROUP_DATABASES All databases in availability groups
USER_DATABASES, -AVAILABILITY_GROUP_DATABASES All user databases that are not in availability groups
Db1 The database Db1
Db1, Db2 The databases Db1 and Db2
USER_DATABASES, -Db1 All user databases, except Db1
%Db% All databases that have “Db” in the name
%Db%, -Db1 All databases that have “Db” in the name, except Db1
ALL_DATABASES, -%Db% All databases that do not have “Db” in the name

Directory

Specify backup root directories, which can be local directories or network shares. If you specify multiple directories, then the backup files are striped evenly across the directories. Specify multiple directories by using the comma (,). If no directory is specified, then the SQL Server default backup directory is used.

Value Description
NULL Back up to the SQL Server default backup directory. This is the default.
C:\Backup Back up to the directory C:\Backup.
C:\Backup, D:\Backup Back up to the directories C:\Backup and D:\Backup.
\\Server1\Backup Back up to the network share \\Server1\Backup.
\\Server1\Backup, \\Server2\Backup Back up to the network shares \\Server1\Backup and \\Server2\Backup.
NUL Backup to NUL.

DatabaseBackup creates a directory structure with server name, instance name, database name, and backup type under the backup root directory. If the database is a part of an availability group, then cluster name and availability group name are used instead of server name and instance name.

BackupType

Specify the type of backup: full, differential, or transaction log.

Value Description
FULL Full backup
DIFF Differential backup
LOG Transaction log backup

DatabaseBackup uses the SQL Server BACKUP command: BACKUP DATABASE for the full backup, BACKUP DATABASE WITH DIFFERENTIAL for the differential backup, and BACKUP LOG for the transaction log backup.

Verify

Verify the backup.

Value Description
Y Verify the backup.
N Do not verify the backup. This is the default.

The Verify option in DatabaseBackup uses the SQL Server RESTORE VERIFYONLY command.

CleanupTime

Specify the time, in hours, after which the backup files are deleted. If no time is specified, then no backup files are deleted.

DatabaseBackup has a check to verify that transaction log backups that are newer than the most recent full or differential backup are not deleted.

CleanupMode

Specify if old backup files should be deleted before or after the backup has been performed.

Value Description
BEFORE_BACKUP Delete old backup files before the backup has been performed.
AFTER_BACKUP Delete old backup files after the backup and verify has been performed. If the backup or verify failed, then no backup files are deleted. This is the default.

Compress

Compress the backup. If no value is specified, then the backup compression default in sys.configurations is used.

Value Description
NULL Use the backup compression default in sys.configurations. This is the default.
Y Compress the backup.
N Do not compress the backup.

The Compress option in DatabaseBackup uses the COMPRESSION and NO_COMPRESSION options in the SQL Server BACKUP command.

CopyOnly

Perform a copy-only backup.

Value Description
Y Perform a copy-only backup.
N Perform a normal backup. This is the default.

The CopyOnly option in DatabaseBackup uses the COPY_ONLY option in the SQL Server BACKUP command.

ChangeBackupType

Change the backup type if a differential or transaction-log backup cannot be performed.

Value Description
Y Change the backup type if a backup cannot be performed.
N Skip the backup if a backup cannot be performed. This is the default.

DatabaseBackup checks differential_base_lsn in sys.master_files to determine whether a differential backup can be performed. If a differential backup is not possible, then the database is skipped by default. Alternatively, you can set ChangeBackupType to Y to have a full backup performed instead.

DatabaseBackup checks last_log_backup_lsn in sys.database_recovery_status to determine whether a transaction log backup in full or bulk-logged recovery model can be performed. If a transaction log backup is not possible, then the database is skipped by default. Alternatively, you can set ChangeBackupType to Y to have a differential or full backup performed instead.

BackupSoftware

Specify third-party backup software; otherwise, SQL Server native backup is performed.

Value Description
NULL SQL Server native backup (the default)
DATA_DOMAIN_BOOST DELL EMC Data Domain Boost
LITESPEED Quest LiteSpeed for SQL Server
SQLBACKUP Red Gate SQL Backup Pro
SQLSAFE Idera SQL Safe Backup

CheckSum

Enable backup checksums.

Value Description
Y Enable backup checksums.
N Do not enable backup checksums. This is the default.

The CheckSum option in DatabaseBackup uses the CHECKSUM option in the SQL Server BACKUP command.

BlockSize

Specify the physical blocksize in bytes.

The BlockSize option in DatabaseBackup uses the BLOCKSIZE option in the SQL Server BACKUP command.

BufferCount

Specify the number of I/O buffers to be used for the backup operation.

The BufferCount option in DatabaseBackup uses the BUFFERCOUNT option in the SQL Server BACKUP command.

MaxTransferSize

Specify the largest unit of transfer, in bytes, to be used between SQL Server and the backup media.

The MaxTransferSize option in DatabaseBackup uses the MAXTRANSFERSIZE option in the SQL Server BACKUP command.

NumberOfFiles

Specify the number of backup files. The default is the number of backup directories and the maximum is 64 files.

MinBackupSizeForMultipleFiles

Specify a minimum backup size in MB, for when DatabaseBackup should back up to multiple files.

MaxFileSize

Specify a maximum backup file size in MB. DatabaseBackup will dynamically calculate the number of backup files.

CompressionLevel

Set the LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup compression level.

In LiteSpeed, the compression levels 0 to 8 are supported. In Red Gate SQL Backup Pro, levels 0 to 4 are supported, and in Idera SQL Safe Backup, levels 1 to 4 are supported.

Description

Enter a description for the backup.

The Description option in DatabaseBackup uses the DESCRIPTION option in the SQL Server BACKUP command.

Threads

Specify the LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup number of threads. The maximum number of threads is 32.

Throttle

Specify the LiteSpeed maximum CPU usage, as a percentage.

Encrypt

Encrypt the backup.

Value Description
Y Encrypt the backup.
N Do not encrypt the backup. This is the default.

The Encrypt option in DatabaseBackup uses the ENCRYPTION option in the SQL Server BACKUP command.

EncryptionAlgorithm

Specify the type of encryption.

Value Description
NULL No encryption (the default)
RC2_40 RC2 40-bit encryption (LiteSpeed)
RC2_56 RC2 56-bit encryption (LiteSpeed)
RC2_112 RC2 112-bit encryption (LiteSpeed)
RC2_128 RC2 128-bit encryption (LiteSpeed)
TRIPLE_DES_3KEY Triple DES encryption (SQL Server native encryption or LiteSpeed)
RC4_128 RC4 128-bit encryption (LiteSpeed)
AES_128 AES 128-bit encryption (SQL Server native encryption, LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup)
AES_192 AES 192-bit encryption (SQL Server native encryption or LiteSpeed)
AES_256 AES 256-bit encryption (SQL Server native encryption, LiteSpeed, Red Gate SQL Backup Pro, or Idera SQL Safe Backup)

The EncryptionAlgorithm option in DatabaseBackup uses the ENCRYPTION and ALGORITHM options in the SQL Server BACKUP command.

ServerCertificate

Server certificate that is used to encrypt the backup.

The ServerCertificate option in DatabaseBackup uses the ENCRYPTION and SERVER CERTIFICATE options in the SQL Server BACKUP command.

ServerAsymmetricKey

Asymmetric key that is used to encrypt the backup.

The ServerAsymmetricKey option in DatabaseBackup uses the ENCRYPTION and SERVER ASYMMETRIC KEY options in the SQL Server BACKUP command.

EncryptionKey

Key that is used to encrypt the backup. This is used with LiteSpeed, Red Gate SQL Backup Pro, and Idera SQL Safe Backup.

ReadWriteFileGroups

Perform a backup of the primary filegroup and any read/write filegroups.

Value Description
Y Perform a backup of the primary filegroup and any read/write filegroups.
N Perform a normal backup. This is the default.

The ReadWriteFileGroups option in DatabaseBackup uses the READ_WRITE_FILEGROUPS option in the SQL Server BACKUP command.

OverrideBackupPreference

Override the backup preference for availability groups. This option only applies to copy-only full backups and regular transaction log backups.

Value Description
Y Override the backup preference for availability groups.
N Do not override the backup preference for availability groups. This is the default.

NoRecovery

Perform a backup of the tail of the log and leave the database in the RESTORING state.

Value Description
Y Perform a backup of the tail of the log.
N Perform a normal backup. This is the default.

The NoRecovery option in DatabaseBackup uses the NORECOVERY option in the SQL Server BACKUP command.

URL

Specify the URL for backup to Azure Blob Storage.

The URL option in DatabaseBackup uses the URL option in the SQL Server BACKUP command.

Credential

Specify a CREDENTIAL for backup to Windows Azure Blob Storage.

The Credential option in DatabaseBackup uses the CREDENTIAL option in the SQL Server BACKUP command.

MirrorDirectory

Specify one or multiple directories to perform a mirrored backup.

The MirrorDirectory option in DatabaseBackup uses the MIRROR TO option in the SQL Server BACKUP command.

MirrorCleanupTime

Specify the time, in hours, after which the backup files are deleted in the mirror directories. If no time is specified, then no backup files are deleted.

By default backup files are deleted after each database is backed up and verified. Backup files are deleted only if the backup and verification of the database were successful.

DatabaseBackup has a check to verify that transaction log backups that are newer than the most recent full or differential backup are not deleted. This is to guarantee that you can always perform a point-in-time restore.

MirrorCleanupMode

Specify if old backup files in the mirror directory should be deleted before or after the backup has been performed.

Value Description
BEFORE_BACKUP Delete old backup files before the backup has been performed.
AFTER_BACKUP Delete old backup files after the backup has been performed. This is the default.

MirrorURL

Specify the URL for a mirrored backup to Azure Blob Storage.

The MirrorURL option in DatabaseBackup uses the MIRROR TO URL option in the SQL Server BACKUP command.

AvailabilityGroups

Select availability groups. The keyword ALL_AVAILABILITY_GROUPS is supported. The hyphen character (-) is used to exclude availability groups, and the percent character (%) is used for wildcard selection. All of these operations can be combined by using the comma (,).

Value Description
ALL_AVAILABILITY_GROUPS All availability groups
AG1 The availability group AG1
AG1, AG2 The availability groups AG1 and AG1
ALL_AVAILABILITY_GROUPS, -AG1 All availability groups, except AG1
%AG% All availability groups that have “AG” in the name
%AG%, -AG1 All availability groups that have “AG” in the name, except AG1
ALL_AVAILABILITY_GROUPS, -%AG% All availability groups that do not have “AG” in the name

Updateability

Select READ_ONLY/READ_WRITE - databases.

Value Description
ALL READ_ONLY and READ_WRITE - databases. This is the default.
READ_ONLY READ_ONLY - databases
READ_WRITE READ_WRITE - databases

is_read_only in sys.databases is used to check if a database is READ_ONLY or READ_WRITE.

AdaptiveCompression

Automatically selects the optimal compression level based on CPU usage or Disk IO. This option is only available for LiteSpeed.

Value Description
SIZE Optimize the backup compression for size.
SPEED Optimize the backup compression for speed.

ModificationLevel

Specify a percentage when a differential backup will be changed to a full backup. This option can only be used together with @ChangeBackupType = 'Y'.

DatabaseBackup checks allocated_extent_page_count and modified_extent_page_count in sys.dm_db_file_space_usage to calculate how much of a database that has been modified.

LogSizeSinceLastLogBackup

Specify a minimum size (MB) for the amount of log that has been generated since the last log backup. This option can only be used together with @TimeSinceLastLogBackup.

DatabaseBackup checks log_since_last_log_backup_mb in sys.dm_db_log_stats to dermine how much log that has been generated since the last log backup.

If the database is participating in an availability group as a secondary replica, the log will be backed up, regardless of this parameter.

TimeSinceLastLogBackup

Specify a minimum time, in seconds, since the last log backup. This option can only be used together with @LogSizeSinceLastLogBackup.

DatabaseBackup checks log_backup_time in sys.dm_db_log_stats to dermine when a transaction log has been backed up the last time.

If the database is participating in an availability group as a secondary replica, the log will be backed up, regardless of this parameter.

DataDomainBoostHost

Specify the name of the Data Domain server.

DataDomainBoostUser

Specify the name of the Data Domain user.

DataDomainBoostDevicePath

Specify the name and the path of the Data Domain storage unit.

DataDomainBoostLockboxPath

Specify the folder that contains the Data Domain lockbox file.

DirectoryStructure

Specify the backup sub-directory structure for databases that are not in an availability group.

You can use the following tokens:

Token Description
ServerName Server name
InstanceName Instance name
ServiceName Service name
DatabaseName Database name
BackupType Backup type
Partial PARTIAL for partial backups
CopyOnly COPY_ONLY for copy-only backups
Description Backup description
MajorVersion Major version
MinorVersion Minor version
DirectorySeparator The directory separator

Default directory structure: {ServerName}${InstanceName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}

Tokens that do not apply will be removed. E.g. the token {CopyOnly} (and the associated _) will be removed if it is not a copy-only backup.

If the parameter is set to NULL, no sub-directories will be created.

AvailabilityGroupDirectoryStructure

Specify the backup sub-directory structure for databases that are in an availability group.

You can use the following tokens:

Token Description
ServerName Server name
InstanceName Instance name
ServiceName Service name
ClusterName Cluster name
AvailabilityGroupName Availability group name
DatabaseName Database name
BackupType Backup type
Partial PARTIAL for partial backups
CopyOnly COPY_ONLY for copy-only backups
Description Backup description
MajorVersion Major version
MinorVersion Minor version
DirectorySeparator The directory separator

Default directory structure: {ClusterName}${AvailabilityGroupName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}

Tokens that do not apply will be removed. E.g. the token {CopyOnly} (and the associated _) will be removed if it is not a copy-only backup.

If the parameter is set to NULL, no sub-directories will be created.

FileName

Specify the file name for databases that are not in an availability group.

You can use the following tokens:

Token Description
ServerName Server name
InstanceName Instance name
ServiceName Service name
DatabaseName Database name
BackupType Backup type
Partial PARTIAL for partial backups
CopyOnly COPY_ONLY for copy-only backups
Description Backup description
Year Year
Month Month
Day Day
Week Week
Hour Hour
Minute Minute
Second Second
Millisecond Millisecond
Microsecond Microsecond
FileNumber The file number when you are backing up to multiple - files
NumberOfFiles The number of files when you are backing up to multiple files
FileExtension The file extension
MajorVersion Major version
MinorVersion Minor version

Default file name: {ServerName}${InstanceName}_{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}{Month}{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}

Tokens that do not apply will be removed. E.g. the token {CopyOnly} (and the associated _) will be removed if it is not a copy-only backup.

AvailabilityGroupFileName

Specify the file name for databases that are in an availability group.

You can use the following tokens:

Token Description
ServerName Server name
InstanceName Instance name
ServiceName Service name
ClusterName Cluster name
AvailabilityGroupName Availability group name
DatabaseName Database name
BackupType Backup type
Partial PARTIAL for partial backups
CopyOnly COPY_ONLY for copy-only backups
Description Backup description
Year Year
Month Month
Day Day
Week Week
Hour Hour
Minute Minute
Second Second
Millisecond Millisecond
Microsecond Microsecond
FileNumber The file number when you are backing up to multiple files
NumberOfFiles The number of files when you are backing up to multiple files
FileExtension The file extension
MajorVersion Major version
MinorVersion Minor version

Default file name: {ClusterName}${AvailabilityGroupName}_{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}{Month}{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}

Tokens that do not apply will be removed. E.g. the token {CopyOnly} (and the associated _) will be removed if it is not a copy-only backup.

FileExtensionFull

Specify the file extension for full backups.

By default "bak" is used for SQL Server native backups, "bak" is used for LiteSpeed, "sqb" is used for Red Gate SQL Backup Pro, and "safe" is used for Idera SQL Safe Backup.

FileExtensionDiff

Specify the file extension for differential backups.

By default "bak" is used for SQL Server native backups, "bak" is used for LiteSpeed, "sqb" is used for Red Gate SQL Backup Pro, and "safe" is used for Idera SQL Safe Backup.

FileExtensionLog

Specify the file extension for log backups.

By default "trn" is used for SQL Server native backups, "trn" is used for LiteSpeed, "sqb" is used for Red Gate SQL Backup Pro, and "safe" is used for Idera SQL Safe Backup.

Init

Specify whether the backup file should be overwritten.

Value Description
Y Overwrite the backup file.
N Append the backup to the backup file. This is the default.

The Init option in DatabaseBackup uses the INIT option in the SQL Server BACKUP command.

Format

Specify whether a new media header should be created.

Value Description
Y Create a new media header.
N Preserve the existing media header. This is the default.

The Format option in DatabaseBackup uses the FORMAT option in the SQL Server BACKUP command.

ObjectLevelRecoveryMap

Generate a map file during a backup for Object Level Recovery. This option is only supported in LiteSpeed.

Value Description
Y Generate a map file.
N Do not generate a map file. This is the default.

ExcludeLogShippedFromLogBackup

Exclude databases configured for Log Shipping, from log backups.

Value Description
Y Exclude databases configured for Log Shipping, from log backups. This is the default.
N Do not exclude databases configured for Log Shipping, from log backups.

DirectoryCheck

Check if the backup root directory exists.

Value Description
Y Check if the backup root directory exists. This is the default.
N Do not check if the backup root directory exists.

StringDelimiter

Specify the string delimiter. By default, the string delimiter is comma.

DatabaseOrder

Specify the database order.

Value Description
NULL The order that the databases have been specified in. Then ascending by the database name. This is the default.
DATABASE_NAME_ASC Ascending by the database name
DATABASE_NAME_DESC Descending by the database name
DATABASE_SIZE_ASC Ascending by the database size
DATABASE_SIZE_DESC Descending by the database size
LOG_SIZE_SINCE_LAST_LOG_BACKUP_ASC Ascending by log_since_last_log_backup_mb in sys.dm_db_log_stats
LOG_SIZE_SINCE_LAST_LOG_BACKUP_DESC Descending by log_since_last_log_backup_mb in sys.dm_db_log_stats

DatabasesInParallel

Process databases in parallel.

Value Description
Y Process databases in parallel.
N Process databases one at a time. This is the default.

You can process databases in parallel by creating multiple jobs with the same parameters, and add the parameter @DatabasesInParallel = 'Y'.

LogToTable

Log commands to the table dbo.CommandLog.

Value Description
Y Log commands to the table.
N Do not log commands to the table. This is the default.

Execute

Execute commands. By default, the commands are executed normally. If this parameter is set to N, then the commands are printed only.

Value Description
Y Execute commands. This is the default.
N Only print commands.

Examples

A. Back up all user databases, using checksums and compression; verify the backup; and delete old backup files

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@Verify = 'Y',
@Compress = 'Y',
@CheckSum = 'Y',
@CleanupTime = 24

B. Back up all user databases to a network share, and verify the backup

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = '\\Server1\Backup',
@BackupType = 'FULL',
@Verify = 'Y'

C. Back up all user databases across four network shares, and verify the backup

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = '\\Server1\Backup, \\Server2\Backup, \\Server3\Backup, \\Server4\Backup',
@BackupType = 'FULL',
@Verify = 'Y',
@NumberOfFiles = 4

D. Back up all user databases to 64 files, using checksums and compression and setting the buffer count and the maximum transfer size

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@Compress = 'Y',
@CheckSum = 'Y',
@BufferCount = 50,
@MaxTransferSize = 4194304,
@NumberOfFiles = 64

E. Back up all user databases to Azure Blob Storage, using compression

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@URL = 'https://myaccount.blob.core.windows.net/mycontainer',
@Credential = 'MyCredential',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y'

F. Back up the transaction log of all user databases, using the option to change the backup type if a log backup cannot be performed

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'LOG',
@ChangeBackupType = 'Y'

G. Back up all user databases, using compression, encryption, and a server certificate.

EXECUTE dbo.DatabaseBackup @Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@Compress = 'Y',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256',
@ServerCertificate = 'MyCertificate'

H. Back up all user databases, using compression, encryption, and LiteSpeed, and limiting the CPU usage to 10 percent

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@BackupSoftware = 'LITESPEED',
@Compress = 'Y',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256',
@EncryptionKey = 'MyPassword',
@Throttle = 10

I. Back up all user databases, using compression, encryption, and Red Gate SQL Backup Pro

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@BackupSoftware = 'SQLBACKUP',
@Compress = 'Y',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256',
@EncryptionKey = 'MyPassword'

J. Back up all user databases, using compression, encryption, and Idera SQL Safe Backup

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@BackupSoftware = 'SQLSAFE',
@Compress = 'Y',
@Encrypt = 'Y',
@EncryptionAlgorithm = 'AES_256',
@EncryptionKey = '8tPyzp4i1uF/ydAN1DqevdXDeVoryWRL'

K. Back up all user databases, using mirrored backups.

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@MirrorDirectory = 'D:\Backup',
@BackupType = 'FULL',
@Compress = 'Y',
@Verify = 'Y',
@CleanupTime = 24,
@MirrorCleanupTime = 48

L. Back up all user databases, using Data Domain Boost.

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@BackupType = 'FULL',
@CheckSum = 'Y',
@BackupSoftware = 'DATA_DOMAIN_BOOST',
@DataDomainBoostHost = 'Host',
@DataDomainBoostUser = 'User',
@DataDomainBoostDevicePath = '/DevicePath',
@DataDomainBoostLockboxPath = 'C:\Program Files\DPSAPPS\common\lockbox',
@CleanupTime = 24

M. Back up all user databases, with the default directory structure and file names.

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@DirectoryStructure = '{ServerName}${InstanceName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}',
@AvailabilityGroupDirectoryStructure = '{ClusterName}${AvailabilityGroupName}{DirectorySeparator}{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}',
@FileName = '{ServerName}${InstanceName}_{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}{Month}{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}',
@AvailabilityGroupFileName = '{ClusterName}${AvailabilityGroupName}_{DatabaseName}_{BackupType}_{Partial}_{CopyOnly}_{Year}{Month}{Day}_{Hour}{Minute}{Second}_{FileNumber}.{FileExtension}'

N. Back up all user databases, to a directory structure without the server name, instance name, cluster name, and availability group name.

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@DirectoryStructure = '{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}',
@AvailabilityGroupDirectoryStructure = '{DatabaseName}{DirectorySeparator}{BackupType}_{Partial}_{CopyOnly}'

O. Back up all user databases, without creating any sub-directories.

EXECUTE dbo.DatabaseBackup
@Databases = 'USER_DATABASES',
@Directory = 'C:\Backup',
@BackupType = 'FULL',
@DirectoryStructure = NULL,
@AvailabilityGroupDirectoryStructure = NULL

Execution

You can execute the stored procedures from T-SQL job steps, or from CmdExec job steps with sqlcmd and the -b option.

SQL Server version Job type
SQL Server 2008 and 2008 R2 on Windows CmdExec job steps with sqlcmd and the -b option
SQL Server 2012, 2014, 2016, and 2017 on Windows T-SQL job steps or CmdExec job steps with sqlcmd and the -b option
SQL Server 2017 on Linux T-SQL job steps
Azure SQL Database Managed Instance T-SQL job steps

There is a problem in SQL Server 2005, 2008 and 2008 R2 that a T-SQL job step stops executing after the first error. Use CmdExec job steps with sqlcmd and the -b option on these versions.

You can use the MaintenanceSolution.sql script to create the jobs. It will create CmdExec job steps with sqlcmd on SQL Server 2005, 2008 and 2008 R2, and T-SQL job steps on later versions.