仅复制备份
适用范围:SQL Server Azure SQL 托管实例
仅复制备份是独立于独立于传统 SQL Server 备份顺序的 SQL Server 备份。 通常,进行备份会更改数据库并影响其后备份的还原方式。 但是,有时在不影响数据库总体备份和还原过程的情况下,为特殊目的而进行备份还是有用的。 仅复制备份就是用于此目的。
仅复制备份的类型如下所示:
仅复制完整备份(所有恢复模式)
仅复制备份不能用作差异基准或差异备份,并且不影响差异基准。
还原仅复制完整备份与还原任何其他完整备份相同。
仅复制日志备份(仅限于完整恢复模式和大容量日志恢复模式)
仅复制日志备份保留当前日志存档点,因此,不影响常规日志备份的先后顺序。 通常不必进行仅复制日志备份。 相反,可以创建新的常规日志备份(使用
WITH NORECOVERY
),然后将该备份与还原顺序所需的任何以前的日志备份一起使用。 但是,仅复制日志备份有时可用于执行联机还原。 有关更多信息,请改用仅复制备份文件,按照示例:读写文件的联机还原(完整恢复模式)文章中的说明进行操作。事务日志从不在仅复制备份后出现截断。
仅复制备份记录在 backupset 表的 is_copy_only
列中。
重要
在 Azure SQL 托管实例中,无法为使用服务管理的透明数据加密 (TDE) 加密的数据库创建仅复制备份。 服务管理的 TDE 使用内部密钥对数据进行加密,并且该密钥无法导出,因此无法在其他任何地方恢复备份。 请考虑改用客户管理的 TDE 来创建加密数据库的仅复制备份,但请确保具有加密密钥供以后还原。
创建仅复制备份
可以使用 SQL Server Management Studio、Azure Data Studio、Transact-SQL 或 PowerShell 创建仅复制备份。
A. 使用 SQL Server Management Studio
在此示例中,Sales
数据库的仅复制备份将备份到磁盘的默认备份位置。
在“对象资源管理器”中,连接到一个 SQL Server 数据库引擎实例,然后展开该实例。
展开“数据库”,右键单击“
Sales
”,指向“任务”,然后选择“备份...”。在的“常规”页的“源”部分中,选中“仅复制备份”复选框。
选择“确定”。
B. 使用 Transact-SQL
此示例利用 Sales
参数为 COPY_ONLY
数据库创建仅复制备份。 同时还创建事务日志的仅复制备份。
BACKUP DATABASE Sales
TO DISK = 'E:\BAK\Sales_Copy.bak'
WITH COPY_ONLY;
BACKUP LOG Sales
TO DISK = 'E:\BAK\Sales_LogCopy.trn'
WITH COPY_ONLY;
注意
使用 COPY_ONLY
选项指定时,DIFFERENTIAL
不起作用。
°C 使用 Transact-SQL 和 Azure SQL 托管实例
Azure SQL 托管实例支持进行 COPY_ONLY 完整备份。 以下示例向 Microsoft Azure Blob 存储执行 MyDatabase
的 COPY_ONLY 备份。 存储帐户名称为 mystorageaccount
。 容器名称为 myfirstcontainer
。 已经创建具有读取、写入、删除和列表权限的存储访问策略。 已使用与存储访问策略密钥相关联的共享访问签名创建 SQL Server 凭据 https://mystorageaccount.blob.core.windows.net/myfirstcontainer
。 有关 SQL Server 备份到 Microsoft Azure Blob 存储的详细信息,请参阅使用 Microsoft Azure Blob 存储进行 SQL Server 备份和还原和 SQL Server 备份到 URL。
-- Prerequisite to have write permissions
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/myfirstcontainer]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sp=...' -- Enter your secret SAS token here.
BACKUP DATABASE MyDatabase
TO URL = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/MyDatabaseBackup.bak'
WITH STATS = 5, COPY_ONLY;
若要将仅复制备份分为多个带状线,请使用此示例:
BACKUP DATABASE MyDatabase
TO URL = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/MyDatabase-01.bak',
URL = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/MyDatabase-02.bak',
URL = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/MyDatabase-03.bak',
URL = 'https://mystorageaccount.blob.core.windows.net/myfirstcontainer/MyDatabase-04.bak'
WITH COPY_ONLY;
D. 使用 PowerShell
此示例利用 Sales
参数为 -CopyOnly
数据库创建仅复制备份。
Backup-SqlDatabase -ServerInstance 'SalesServer' -Database 'Sales' -BackupFile 'E:\BAK\Sales_Copy.bak' -CopyOnly