备份和还原 Linux 上的 SQL Server 数据库

时间:2023-02-07 13:23:19

备份数据库

在下面的示例sqlcmd连接到本地 SQL Server 实例,并采用完整备份的名为的用户数据库demodb

 sqlcmd -S localhost -U SA -Q "BACKUP DATABASE [demodb] TO DISK = N'/var/opt/mssql/data/demodb.bak' WITH NOFORMAT, NOINIT, NAME = 'demodb-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"

 

备份事务日志

如果你的数据库处于完整恢复模式,您还可以更精细的还原选项的事务日志备份。 在以下示例中, sqlcmd连接到本地 SQL Server 实例,并将事务日志备份。

bash
sqlcmd -S localhost -U SA -Q "BACKUP LOG [demodb] TO DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak' WITH NOFORMAT, NOINIT, NAME = N'demodb_LogBackup', NOSKIP, NOREWIND, NOUNLOAD, STATS = 5" 

还原数据库

在下面的示例sqlcmd连接到 SQL Server 的本地实例,并将 demodb 数据库还原。 请注意,NORECOVERY选项用于允许其他的日志文件备份还原。 如果不打算还原其他日志文件,删除NORECOVERY选项。

bash
sqlcmd -S localhost -U SA -Q "RESTORE DATABASE [demodb] FROM DISK = N'/var/opt/mssql/data/demodb.bak' WITH FILE = 1, NOUNLOAD, REPLACE, NORECOVERY, STATS = 5" 

 提示

如果你意外地使用 NORECOVERY,但不是具有额外的日志文件备份,运行命令RESTORE DATABASE demodb不带任何其他参数。 这完成还原并保持您的数据库操作状态。

还原事务日志

以下命令将还原以前的事务日志备份。

sqlcmd -S localhost -U SA -Q "RESTORE LOG demodb FROM DISK = N'/var/opt/mssql/data/demodb_LogBackup.bak'"