1
0
mirror of https://github.com/bitwarden/server synced 2025-12-06 00:03:34 +00:00
Files
server/util/MsSql/backup-db.sql

31 lines
1.1 KiB
Transact-SQL

-- Database name which is set from the backup-db.sh script.
DECLARE @DatabaseName varchar(100)
SET @DatabaseName = 'vault'
-- Check if database is in FULL recovery and has never had a t-log backup
IF EXISTS (
SELECT 1 FROM sys.databases
WHERE name = @DatabaseName AND recovery_model = 1 -- 1 = FULL
) AND NOT EXISTS (
SELECT 1 FROM msdb.dbo.backupset
WHERE database_name = @DatabaseName AND type = 'L' -- L = Transaction Log
)
BEGIN
EXEC('ALTER DATABASE [' + @DatabaseName + '] SET RECOVERY SIMPLE')
END
-- Database name without spaces for saving the backup files.
DECLARE @DatabaseNameSafe varchar(100)
SET @DatabaseNameSafe = 'vault'
DECLARE @BackupFile varchar(100)
SET @BackupFile = '/etc/bitwarden/mssql/backups/' + @DatabaseNameSafe + '_FULL_$(now).BAK'
DECLARE @BackupName varchar(100)
SET @BackupName = @DatabaseName + ' full backup for $(now)'
DECLARE @BackupCommand NVARCHAR(1000)
SET @BackupCommand = 'BACKUP DATABASE [' + @DatabaseName + '] TO DISK = ''' + @BackupFile + ''' WITH INIT, NAME= ''' + @BackupName + ''', NOSKIP, NOFORMAT'
EXEC(@BackupCommand)