dockerized sqlserver的在线备份

时间:2020-03-13 14:23:54

标签: sql-server docker backups

我正在docker容器中使用sqlserver,并且想进行在线备份,但不确定如何执行。

当前,当我的脚本执行并且其中一个数据库正在使用中时,我收到一条消息,提示“无法使用互斥锁数据库”。 sqlserver中有一种方法可以执行“热备份”。

我一直在搜索google,而我所看到的唯一结果表明,您需要将数据库置于“单用户模式”下进行备份,然后再将其返回至“多用户模式”。 使用这种方法(这种方法有效)的我的担心是,您可能会将用户踢出数据库中间事务。

任何指针将不胜感激。

这是我的bash脚本:

 #!/bin/bash
    #
    backupDir="/var/opt/mssql/backup/"

    #databases=$(/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -Q 'set nocount on;select Name from sys.Databases' -h -1)
    databases=$(/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -Q 'set nocount on;select Name from sys.Databases' | grep -Ev "(----|Name|master|tempdb|model|msdb|affected\)$|\s\n|^$)")
    for db in $databases; do
        backupName=$db".bak"
       /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -Q "
        BEGIN
         BACKUP DATABASE [$db]
         TO DISK = N'$backupDir$backupName'
         WITH NOFORMAT, NOINIT, NAME = '$db-full',  SKIP, NOREWIND, NOUNLOAD, STATS = 10
        END
        GO
        "
    done

0 个答案:

没有答案