Sql-Server

有了備份文件,如何計算恢復所需的總磁碟空間?

  • March 27, 2019

我有一個很好的查詢,它給了我上次完整備份的日期、大小和位置,即使我備份到多個備份文件也是如此。

我沒有的是對總備份大小的估計(對於每個數據庫文件)。

基本上,每個驅動器中我需要多少磁碟空間才能進行此還原?

我一直在嘗試

RESTORE FILELISTONLY FROM DISK=N'C:\SQL Server\BACKUP\my_backup_FULL_20190324_190109.bak'

但我無法計算出還原後的數據庫所需的總磁碟空間。

在此處輸入圖像描述

我從restore filelistonly上面得到了大小,但是磁碟中原始數據庫的大小如下:

在此處輸入圖像描述

我剛發現: 在此處輸入圖像描述

如果我認為您希望在SELECT多個數據庫的語句中使用它,下面的程式碼是一個好的開始

CREATE TABLE #FileListHeaders (     
    LogicalName    nvarchar(128)
   ,PhysicalName   nvarchar(260)
   ,[Type] char(1)
   ,FileGroupName  nvarchar(128) NULL
   ,Size   numeric(20,0)
   ,MaxSize    numeric(20,0)
   ,FileID bigint
   ,CreateLSN  numeric(25,0)
   ,DropLSN    numeric(25,0) NULL
   ,UniqueID   uniqueidentifier
   ,ReadOnlyLSN    numeric(25,0) NULL
   ,ReadWriteLSN   numeric(25,0) NULL
   ,BackupSizeInBytes  bigint
   ,SourceBlockSize    int
   ,FileGroupID    int
   ,LogGroupGUID   uniqueidentifier NULL
   ,DifferentialBaseLSN    numeric(25,0) NULL
   ,DifferentialBaseGUID   uniqueidentifier NULL
   ,IsReadOnly bit
   ,IsPresent  BIT
   ,TDEThumbprint VARBINARY(32)
   ,SnapshotURL NVARCHAR(360)
)
INSERT INTO #FileListHeaders
EXEC ('RESTORE FILELISTONLY FROM DISK = ''C:\Program Files\Microsoft SQL Server\
      MSSQL14.MSSQLSERVER\MSSQL\Backup\test.bak''')
SELECT Size/1024/1024 AS [size in mb],* FROM #FileListHeaders

從這裡得到腳本

一個警告是,在他處理的上述連結中,不同版本的 sql server 中創建的表不同。根據您更改腳本。

引用自:https://dba.stackexchange.com/questions/233215