共用方式為


Restore-SqlDatabase

從備份或事務歷史記錄記錄還原資料庫。

語法

Restore-SqlDatabase
       [-ClearSuspectPageTable]
       [-KeepReplication]
       [-Partial]
       [-ReplaceDatabase]
       [-RestrictedUser]
       [-Offset <Int64[]>]
       [-RelocateFile <RelocateFile[]>]
       [-FileNumber <Int32>]
       [-RestoreAction <RestoreActionType>]
       [-StandbyFile <String>]
       [-StopAtMarkAfterDate <String>]
       [-StopAtMarkName <String>]
       [-StopBeforeMarkAfterDate <String>]
       [-StopBeforeMarkName <String>]
       [-ToPointInTime <String>]
       [-Database] <String>
       [-Path <String[]>]
       [[-BackupFile] <String[]>]
       [-SqlCredential <PSObject>]
       [-BackupDevice <BackupDeviceItem[]>]
       [-PassThru]
       [-Checksum]
       [-ContinueAfterError]
       [-NoRewind]
       [-Restart]
       [-UnloadTapeAfter]
       [-NoRecovery]
       [-DatabaseFile <String[]>]
       [-DatabaseFileGroup <String[]>]
       [-BlockSize <Int32>]
       [-BufferCount <Int32>]
       [-MaxTransferSize <Int32>]
       [-MediaName <String>]
       [-Script]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-SqlDatabase
       [-ClearSuspectPageTable]
       [-KeepReplication]
       [-Partial]
       [-ReplaceDatabase]
       [-RestrictedUser]
       [-Offset <Int64[]>]
       [-RelocateFile <RelocateFile[]>]
       [-FileNumber <Int32>]
       [-RestoreAction <RestoreActionType>]
       [-StandbyFile <String>]
       [-StopAtMarkAfterDate <String>]
       [-StopAtMarkName <String>]
       [-StopBeforeMarkAfterDate <String>]
       [-StopBeforeMarkName <String>]
       [-ToPointInTime <String>]
       [-Database] <String>
       -InputObject <Server[]>
       [[-BackupFile] <String[]>]
       [-SqlCredential <PSObject>]
       [-BackupDevice <BackupDeviceItem[]>]
       [-PassThru]
       [-Checksum]
       [-ContinueAfterError]
       [-NoRewind]
       [-Restart]
       [-UnloadTapeAfter]
       [-NoRecovery]
       [-DatabaseFile <String[]>]
       [-DatabaseFileGroup <String[]>]
       [-BlockSize <Int32>]
       [-BufferCount <Int32>]
       [-MaxTransferSize <Int32>]
       [-MediaName <String>]
       [-Script]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-SqlDatabase
       [-ClearSuspectPageTable]
       [-KeepReplication]
       [-Partial]
       [-ReplaceDatabase]
       [-RestrictedUser]
       [-Offset <Int64[]>]
       [-RelocateFile <RelocateFile[]>]
       [-FileNumber <Int32>]
       [-RestoreAction <RestoreActionType>]
       [-StandbyFile <String>]
       [-StopAtMarkAfterDate <String>]
       [-StopAtMarkName <String>]
       [-StopBeforeMarkAfterDate <String>]
       [-StopBeforeMarkName <String>]
       [-ToPointInTime <String>]
       [-Database] <String>
       -ServerInstance <String[]>
       [-Credential <PSCredential>]
       [-ConnectionTimeout <Int32>]
       [[-BackupFile] <String[]>]
       [-SqlCredential <PSObject>]
       [-BackupDevice <BackupDeviceItem[]>]
       [-PassThru]
       [-Checksum]
       [-ContinueAfterError]
       [-NoRewind]
       [-Restart]
       [-UnloadTapeAfter]
       [-NoRecovery]
       [-DatabaseFile <String[]>]
       [-DatabaseFileGroup <String[]>]
       [-BlockSize <Int32>]
       [-BufferCount <Int32>]
       [-MaxTransferSize <Int32>]
       [-MediaName <String>]
       [-Script]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
Restore-SqlDatabase
       [-ClearSuspectPageTable]
       [-KeepReplication]
       [-Partial]
       [-ReplaceDatabase]
       [-RestrictedUser]
       [-Offset <Int64[]>]
       [-RelocateFile <RelocateFile[]>]
       [-FileNumber <Int32>]
       [-RestoreAction <RestoreActionType>]
       [-StandbyFile <String>]
       [-StopAtMarkAfterDate <String>]
       [-StopAtMarkName <String>]
       [-StopBeforeMarkAfterDate <String>]
       [-StopBeforeMarkName <String>]
       [-ToPointInTime <String>]
       [-DatabaseObject] <Database>
       [[-BackupFile] <String[]>]
       [-SqlCredential <PSObject>]
       [-BackupDevice <BackupDeviceItem[]>]
       [-PassThru]
       [-Checksum]
       [-ContinueAfterError]
       [-NoRewind]
       [-Restart]
       [-UnloadTapeAfter]
       [-NoRecovery]
       [-DatabaseFile <String[]>]
       [-DatabaseFileGroup <String[]>]
       [-BlockSize <Int32>]
       [-BufferCount <Int32>]
       [-MaxTransferSize <Int32>]
       [-MediaName <String>]
       [-Script]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]

Description

Restore-SqlDatabase Cmdlet 會在 SQL Server 資料庫上執行還原作業。 這包括完整資料庫還原、交易記錄還原和資料庫檔案還原。

此 Cmdlet 會模型化為 Microsoft.SqlServer.Management.Smo.Restore 類別。 此 Cmdlet 上的參數通常會對應至 Smo.Restore 物件上的屬性。

範例

範例 1:從網路共用上的備份檔還原資料庫

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.bak"

此命令會將完整資料庫 MainDB 從 \\mainserver\databasebackup\MainDB.bak 檔案還原到伺服器實例 Computer\Instance。

範例 2:還原資料庫事務歷史記錄

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RestoreAction Log

此命令會將資料庫 MainDB 的事務歷史記錄,從 \\mainserver\databasebackup\MainDB.trn 檔案還原至伺服器實例 Computer\Instance。

範例 3:還原資料庫並提示輸入密碼

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.bak" -Credential (Get-Credential "sa")

此命令會使用 sa SQL 登入,將完整資料庫 MainDB 從 \\mainserver\databasebackup\MainDB.trn 檔案還原至伺服器實例 Computer\Instance。 此命令會提示您輸入密碼來完成驗證。

範例 4:使用 NORECOVERY 選項還原事務歷史記錄

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RestoreAction Log -NoRecovery

此命令會將資料庫 MainDB 的事務歷史記錄,並將 NORECOVERY 選項從 \\mainserver\databasebackup\MainDB.trn 檔案還原至伺服器實例 'Computer\Instance'。

範例 5:將事務歷史記錄檔記錄還原到一個時間點

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RestoreAction Log -ToPointInTime "Nov 11, 2011 11:11 AM"

此命令會將資料庫 MainDB 的事務歷史記錄還原為傳遞至 ToPointInTime 參數的日期,也就是 2011 年 11 月 11 日上午 11:11。

範例 6:還原資料庫並重新放置數據和記錄檔

PS C:\> $RelocateData = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MainDB_Data", "c:\MySQLServer\MainDB.mdf")
PS C:\> $RelocateLog = New-Object Microsoft.SqlServer.Management.Smo.RelocateFile("MainDB_Log", "c:\MySQLServer\MainDB.ldf")
PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "\\mainserver\databasebackup\MainDB.trn" -RelocateFile @($RelocateData,$RelocateLog)

本範例會將完整資料庫 MainDB 還原至伺服器實例 Computer\Instance,並重新放置數據和記錄檔。 針對每個已移動的檔案,此範例會建構 Microsoft.SqlServer.Management.Smo.RelocateFile 類別的實例。 每個建構函式都會採用兩個自變數:檔案的邏輯名稱,以及檔案將放在目標伺服器上的實體位置。 RelocateFile 物件會傳遞至 Restore-SqlDatabase Cmdlet 的 RelocateFile 參數。

範例 7:從磁帶還原資料庫

PS C:\> $TapeDevice = New-Object Microsoft.Sqlserver.Management.Smo.BackupDeviceItem("\\.\tape0", "Tape")
PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupDevice $TapeDevice

本範例會將資料庫 MainDB 從名為 \\.\tape0 的磁帶裝置還原到伺服器實例 Computer\Instance。 為了表示此裝置,此範例會建構 Microsoft.Sqlserver.Management.Smo.BackupDeviceItem 類別的實例。 建構函式會採用兩個自變數:備份裝置的名稱和備份裝置的類型。 這個BackupDeviceItem對象接著會傳遞至 Restore-SqlDatabase Cmdlet 的 -BackupDevice 參數。

範例 8:從 Azure Blob 儲存體 服務還原資料庫

PS C:\> Restore-SqlDatabase -ServerInstance "Computer\Instance" -Database "MainDB" -BackupFile "https://mystorageaccountname.blob.core.windows.net/container/MyDB.bak" -SqlCredential "mySqlCredential"

此命令會將 Windows Azure Blob 儲存體 服務上檔案的完整資料庫 MainDB 還原至伺服器實例 Computer\Instance。

參數

-BackupDevice

指定儲存備份的裝置。 此參數不能與 BackupFile 參數搭配使用。 如果您要備份到磁帶裝置,請使用此參數。

類型:BackupDeviceItem[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-BackupFile

指定儲存備份檔的位置或位置。 這是選擇性參數。 如果未指定,則會搜尋伺服器的默認備份位置,以取得記錄還原的名稱 <。>trn,或 <針對所有其他還原類型進行資料庫名稱>.bak。 此參數不能與 BackupDevice 參數搭配使用。 如果您要備份到 Windows Azure Blob 儲存體 服務 (URL) ,則必須指定此參數或 BackupDevice 參數。

類型:String[]
Position:3
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-BlockSize

指定備份的實體區塊大小,以位元組為單位。 支援的大小為 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 位元組。 磁帶裝置的預設值為 65536,所有其他裝置則為 512。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-BufferCount

指定要用於備份作業的 I/O 緩衝區總數。 您可以指定任何正整數。 如果緩衝區的 Sqlservr.exe 進程中沒有足夠的虛擬位址空間,您會收到記憶體不足的錯誤。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Checksum

表示在還原作業期間會計算總和檢查碼值。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ClearSuspectPageTable

表示在還原作業之後刪除可疑的頁面數據表。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Confirm

在執行 Cmdlet 前提示您確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-ConnectionTimeout

指定在逾時失敗之前等候伺服器連線的秒數。 逾時值必須是介於 0 到 65534 之間的整數。 如果指定 0,則連線嘗試不會逾時。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ContinueAfterError

表示發生總和檢查碼錯誤時,作業會繼續。 如果未設定,則作業會在總和檢查碼錯誤之後失敗。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

指定 PSCredential 物件,其中包含具有執行此作業許可權之 SQL Server 登入的認證。

類型:PSCredential
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Database

指定要還原的資料庫名稱。 這不能與 DatabaseObject 參數搭配使用。 使用此參數時,也必須指定 PathInputObjectServerInstance 參數。

類型:String
Position:2
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-DatabaseFile

指定還原作業的目標資料庫檔案。 只有在 RestoreAction 參數設定為 [檔案] 時,才會使用此參數。 當 RestoreAction 參數設定為 Files 時,也必須指定 DatabaseFileGroupsDatabaseFiles 參數。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-DatabaseFileGroup

指定還原作業的目標資料庫檔案群組。 只有當 RestoreAction 參數設定為 [檔案] 時,才會使用此參數。 當 RestoreAction 參數設定為 Files 時,也必須指定 DatabaseFileGroupsDatabaseFiles 參數。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-DatabaseObject

指定還原作業的資料庫物件。

類型:Database
Position:2
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-FileNumber

指定用來識別備份媒體上目標備份集的索引編號。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InputObject

指定發生還原之 SQL Server 實例的伺服器物件。

類型:Server[]
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-KeepReplication

表示會保留復寫組態。 如果未設定,還原作業會忽略複寫組態。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-MaxTransferSize

指定要在備份媒體與 SQL Server 實例之間傳輸的最大位元元組數目。 可能的值是 65536 個位元組 (64 KB) 的倍數,最多 4194304 個位元組 (4 MB)。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-MediaName

指定識別媒體集的名稱。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-NoRecovery

表示資料庫已還原至還原狀態。 復原作業不會發生,而且可以還原其他備份。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-NoRewind

表示當還原完成時,磁帶機會在結束位置保持開啟。 如果未設定,就會在作業完成之後倒轉磁帶。 這不適用於磁碟還原。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Offset

指定要還原的頁面位址。 只有在 RestoreAction 參數設定為 OnlinePage 時,才會使用此參數。

類型:Int64[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Partial

表示還原作業是部分還原。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-PassThru

指出這個 Cmdlet 會輸出用來執行還原作業的 Smo.Backup 物件。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Path

指定要在其中執行還原作業之 SQL Server 實例的路徑。 這是選擇性參數。 如果未指定,則會使用目前的工作位置。

類型:String[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-RelocateFile

指定 Smo.Relocate 檔案物件的清單。 每個物件都包含邏輯備份檔案名稱以及實體檔案系統位置。 還原作業會將還原的資料庫移入目標伺服器上的指定實體位置。

類型:RelocateFile[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ReplaceDatabase

指出已建立資料庫的新映像。 這會覆寫任何具有相同名稱的現有資料庫。 如果未設定,當伺服器上已有該名稱的資料庫存在時,還原作業將會失敗。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Restart

表示此 Cmdlet 會繼續部分完成的還原作業。 如果未設定,Cmdlet 會在備份集開頭重新啟動中斷的還原作業。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-RestoreAction

指定執行的還原作業類型。 有效值為:

  • 資料庫。 資料庫已還原。
  • 檔案。 還原一或多個數據檔。 必須指定 DatabaseFileDatabaseFileGroup 參數。
  • 日誌。 轉譯記錄檔已還原。
  • OnlinePage。 數據頁會在在線還原,讓資料庫仍可供使用者使用。
  • OnlineFiles。 數據檔會在線還原,讓資料庫仍可供使用者使用。 必須指定 DatabaseFileDatabaseFileGroup 參數。
類型:RestoreActionType
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-RestrictedUser

表示還原資料庫的存取僅限於db_owner固定資料庫角色,以及 dbcreator 和 sysadmin 固定伺服器角色。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Script

表示此 Cmdlet 會輸出執行還原作業的 Transact-SQL 腳本。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ServerInstance

指定 SQL Server 實例的名稱。 這個伺服器執行個體會成為還原作業的目標。

類型:String[]
Position:Named
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-SqlCredential

指定儲存驗證資訊的 SQL Server 認證物件。 如果您要備份至 Blob 記憶體服務,則必須指定此參數。 儲存的驗證資訊包括記憶體帳戶名稱和相關聯的存取金鑰值。 請勿為磁碟或磁帶指定此參數。

類型:PSObject
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-StandbyFile

指定復原檔案的名稱,做為 SQL Server 實例映像策略的一部分。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-StopAtMarkAfterDate

指定要與 StopAtMarkName 參數所指定的標記名稱搭配使用的日期,以判斷復原作業的停止點。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-StopAtMarkName

指定要停止復原作業的標示交易。 這會與 StopAtMarkAfterDate 參數搭配使用,以判斷復原作業的停止點。 復原的數據報含包含標記的交易。 如果未設定 StopAtMarkAfterDate 值,復原會以指定的名稱在第一個標記停止。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-StopBeforeMarkAfterDate

指定要與 StopBeforeMarkName 參數搭配使用的日期,以判斷復原作業的停止點。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-StopBeforeMarkName

指定要停止復原作業之前所標示的交易。 這會與 StopBeforeMarkAfterDate 參數搭配使用,以判斷復原作業的停止點。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ToPointInTime

指定資料庫記錄還原的端點。 這隻適用於 RestoreAction 參數設定為 Log 時。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-UnloadTapeAfter

表示當作業完成時,磁帶裝置會重新叫用和卸除。 如果未設定,則不會嘗試倒轉並卸載磁帶媒體。 這不適用於磁碟備份。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 Cmdlet 並不會執行。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

Smo.Server

指定 SMO。描述還原作業所在 SQL Server 實例的伺服器物件。