謹慎使用 BACKUP DATABASE TO DISK = 'NUL'
可調整為 BACKUP DATABASE TO DISK = 'NUL' WITH COPY_ONLY
警告:謹慎使用於 Production 生產環境
因為沒有實際備份檔案的產生,將無法用於還原、災難還原、HA等上
BACKUP DATABASE TO DISK = 'NUL' 對資料庫有執行備份作業,且不產生實體備份檔案
若因故寫成 TO DISK = 'NULL' ,這是會產生實體的備份檔案
NUL是虛擬的空設備,寫入到NUL設備的資料將被丟棄。這是在 DOS 作業系統(Disk Operating System)時就已經有的指令,在 Windows 作業系統同樣可以使用。
用於測試環境、測試目的:
- 測試 SQL Server 主機的最大備份吞吐量
- 測試練習用
- 例如,測試需求:對資料庫完整備份、交易紀錄備份,但永不使用此備份檔案
可以使用以下方式:
/* -- 實際範例:備份到空裝置(NUL) BACKUP DATABASE [AdventureWorks2014] TO DISK = 'NUL' WITH COPY_ONLY BACKUP LOG [AdventureWorks2014] TO DISK = 'NUL' WITH COPY_ONLY GO */
測試此 SQL Server 主機的最大備份吞吐量
實際備份的速度是:199.386 MB/sec,但最大備份吞吐量是 492.268 MB/sec。
-- 備份到空裝置(NUL),SSD儲存設備 BACKUP DATABASE 已於 0.386 秒內成功處理了 24322 頁 (492.268 MB/sec)。 -- 實體備份,SSD儲存設備 BACKUP DATABASE 已於 0.953 秒內成功處理了 24322 頁 (199.386 MB/sec)。
示範環境:
SQL Server 2016 (SP1-GDR) (KB3210089)
Windows Server 2016 Datacenter 6.3
範例程式碼
-- 備份到空裝置(NUL) BACKUP DATABASE [資料庫名稱] TO DISK = 'NUL' WITH COPY_ONLY GO BACKUP LOG [資料庫名稱] TO DISK = 'NUL' WITH COPY_ONLY GO -- 實際範例:備份到空裝置(NUL) BACKUP DATABASE [AdventureWorks2014] TO DISK = 'NUL' WITH COPY_ONLY GO /* 已處理資料庫 'AdventureWorks2014' 的 24320 頁,檔案 1 上的檔案 'AdventureWorks2014_Data'。 已處理資料庫 'AdventureWorks2014' 的 2 頁,檔案 1 上的檔案 'AdventureWorks2014_Log'。 BACKUP DATABASE 已於 0.386 秒內成功處理了 24322 頁 (492.268 MB/sec)。 */
-- 實體備份到NULL檔名,存放於預設路徑內 BACKUP DATABASE [資料庫名稱] TO DISK = 'NULL' WITH COPY_ONLY GO -- 實際範例:實體備份到NULL檔名,存放於預設路徑內 BACKUP DATABASE [AdventureWorks2014] TO DISK = 'NULL' WITH COPY_ONLY /* 已處理資料庫 'AdventureWorks2014' 的 24320 頁,檔案 2 上的檔案 'AdventureWorks2014_Data'。 已處理資料庫 'AdventureWorks2014' 的 2 頁,檔案 2 上的檔案 'AdventureWorks2014_Log'。 BACKUP DATABASE 已於 0.953 秒內成功處理了 24322 頁 (199.386 MB/sec)。 */
-- 01_空設備_BACKUP_NUL
-- 02_實體備份_BACKUP_NULL
-- 03_NULL檔名,實際備份檔案
檢視 SQL Server 記錄檔
訊息 Database backed up. Database: AdventureWorks2014, creation date(time): 2017/03/07(07:14:40), pages dumped: 24330, first LSN: 48:816:63, last LSN: 48:864:1, number of dump devices: 1, device information: (FILE=1, TYPE=DISK: {'NUL'}). This is an informational message only. No user action is required. 訊息 BACKUP DATABASE successfully processed 24323 pages in 0.382 seconds (497.443 MB/sec). -- 實體備份到NULL檔名,存放於預設路徑內 訊息 Database backed up. Database: AdventureWorks2014, creation date(time): 2017/03/07(07:14:40), pages dumped: 24331, first LSN: 49:24:37, last LSN: 49:56:1, number of dump devices: 1, device information: (FILE=1, TYPE=DISK: {'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\NULL'}). This is an informational message only. No user action is required. 訊息 BACKUP DATABASE successfully processed 24322 pages in 0.908 seconds (209.268 MB/sec).
-- 11_NUL空設備_檢視SQLServer記錄檔
-- 12_NUL空設備_檢視SQLServer記錄檔
-- 13_實體備份_檢視SQLServer紀錄檔
-- 14_實體備份_檢視SQLServer紀錄檔
查詢備份媒體集的相關資訊
/* -- 查詢備份媒體集的相關資訊 SELECT F.logical_device_name N'邏輯裝置名稱', F.physical_device_name N'備份裝置的實體名稱', M.media_set_id N'媒體集的唯一識別碼', M.media_family_count N'媒體集中的媒體家族數目', M.mirror_count N'媒體集中的鏡像數目' FROM msdb.dbo.backupmediaset M INNER JOIN msdb.dbo.backupmediafamily F ON M.media_set_id = F.media_set_id GO */
-- 15_備份媒體集的資訊
參考文件
SQL SERVER – Taking Backup Without Consuming Disk Space
https://blog.sqlauthority.com/2015/10/26/sql-server-taking-backup-without-consuming-disk-space/
BACKUP DATABASE TO DISK = N‘NUL’ – and misconceptions
https://sql-play.com/2011/10/07/backup-database-to-disk-n%E2%80%98nul%E2%80%99-%E2%80%93-and-misconceptions/
BACKUP DATABASE TO DISK = N‘NUL’
https://simonsql.com/2013/01/04/backup-database-to-disk-nnul/
Speeding up backups
http://www.sqlbackuprestore.com/speedingupbackups.htm
BACKUP DATABASE testDB TO DISK ='NUL:'
https://mohammaddarab.com/backup-database-testdb-to-disknul/
磁盤作業系統(Disk Operating System)
https://zh.wikipedia.org/wiki/DOS
沒有留言:
張貼留言