Restore 类
The Restore object provides programmatic access to restore operations.
继承层次结构
System.Object
Microsoft.SqlServer.Management.Smo.BackupRestoreBase
Microsoft.SqlServer.Management.Smo.Restore
命名空间: Microsoft.SqlServer.Management.Smo
程序集: Microsoft.SqlServer.SmoExtended(在 Microsoft.SqlServer.SmoExtended.dll 中)
语法
声明
Public NotInheritable Class Restore _
Inherits BackupRestoreBase
用法
Dim instance As Restore
public sealed class Restore : BackupRestoreBase
public ref class Restore sealed : public BackupRestoreBase
[<SealedAttribute>]
type Restore =
class
inherit BackupRestoreBase
end
public final class Restore extends BackupRestoreBase
Restore 类型公开以下成员。
构造函数
名称 | 说明 | |
---|---|---|
Restore() | Initializes a new instance of the Restore class. | |
Restore(String, BackupSet) | Initializes a new instance of the Restore class with specified destination database name and backup set. |
页首
属性
名称 | 说明 | |
---|---|---|
Action | Gets or sets the type of restore to be performed. | |
AsyncStatus | 获取备份或还原过程的异步状态。 (从 BackupRestoreBase 继承。) | |
BlockSize | 获取或设置备份或还原的物理块大小(以字节为单位)。 (从 BackupRestoreBase 继承。) | |
BufferCount | 获取或设置要用于备份或还原操作的 I/O 缓冲区总数。 (从 BackupRestoreBase 继承。) | |
Checksum | 获取或设置 Boolean 属性值,该值确定是否在备份或还原操作中计算校验和值。 (从 BackupRestoreBase 继承。) | |
ClearSuspectPageTableAfterRestore | Gets or sets a Boolean value that determines whether entries in the suspect page table will be deleted following the restore operation. | |
ContinueAfterError | 获取或设置 Boolean 属性值,该值确定在出现校验和错误后是否继续执行备份或还原操作。 (从 BackupRestoreBase 继承。) | |
Database | 获取或设置执行备份或还原操作所在的数据库。 (从 BackupRestoreBase 继承。) | |
DatabaseFileGroups | 获取备份或还原操作所针对的 SQL Server 文件组。 (从 BackupRestoreBase 继承。) | |
DatabaseFiles | 获取备份或还原操作所针对的操作系统文件。 (从 BackupRestoreBase 继承。) | |
DatabasePages | Gets the list of the restore pages. | |
Devices | 获取为备份或还原操作指定的备份设备。 (从 BackupRestoreBase 继承。) | |
FileNumber | Gets or sets the index number used to identify the targeted backup set on the backup medium. | |
KeepReplication | Gets or sets a Boolean property value that specifies whether to maintain a replication configuration during a restore operation. | |
MaxTransferSize | 获取或设置要在备份介质和 SQL Server 实例之间传输的最大字节数。 (从 BackupRestoreBase 继承。) | |
MediaName | 获取或设置用于标识特定介质集的名称。 (从 BackupRestoreBase 继承。) | |
NoRecovery | 获取或设置 Boolean 属性值,该值确定是否备份日志尾部以及是否将数据库还原到“正在还原”状态。 (从 BackupRestoreBase 继承。) | |
NoRewind | 获取或设置 Boolean 属性值,该值确定 MicrosoftSQL Server 是否在备份或还原操作后保持磁带打开。 (从 BackupRestoreBase 继承。) | |
Offset | Gets or sets the array of page addresses to be restored. | |
Partial | Gets or sets a Boolean property value that specifies whether a partial or full restore operation will be performed. | |
PercentCompleteNotification | 获取或设置 PercentCompleteEventHandler 事件处理程序调用的百分比间隔。 (从 BackupRestoreBase 继承。) | |
RelocateFiles | Gets the array of database logical file names and operating system physical file names used to redirect database storage when a database is restored to a new physical location. | |
ReplaceDatabase | Gets or sets a Boolean value that specifies whether a restore operation creates a new image of the restored database. | |
Restart | 获取或设置 Boolean 属性值,该值确定备份或还原操作在中断后是否重新启动。 (从 BackupRestoreBase 继承。) | |
RestrictedUser | Gets or sets a Boolean property value that specifies whether access to the restored database is restricted to members of the db_owner fixed database role and the dbcreator and sysadmin fixed server roles. | |
StandbyFile | Gets or sets the name of an undo file that is used as part of the imaging strategy for an instance of SQL Server. | |
StopAtMarkAfterDate | Gets or sets the date to be used in conjunction with the mark name specified by StopAtMarkName to determine the stopping point of the recovery operation. | |
StopAtMarkName | Gets or sets the mark name to be used in conjunction with the date specified by StopAtMarkAfterDate to determine the stopping point of the recovery operation. | |
StopBeforeMarkAfterDate | Gets or sets the date to be used in conjunction with the mark name specified by StopBeforeMarkName to determine the stopping point of the recovery operation. | |
StopBeforeMarkName | Gets or sets the mark name to be used in conjunction with the date specified by StopBeforeMarkAfterDate to determine the stopping point of the recovery operation. | |
ToPointInTime | Gets or sets the endpoint for database log restoration. | |
UnloadTapeAfter | 获取或设置 Boolean 属性值,该值确定在完成备份或还原操作后是否倒带并卸载磁带介质。 (从 BackupRestoreBase 继承。) |
页首
方法
名称 | 说明 | |
---|---|---|
Abort | 终止正在运行的备份或还原操作。 (从 BackupRestoreBase 继承。) | |
ClearSuspectPageTable | Deletes entries in the suspect page table. | |
Equals | (从 Object 继承。) | |
GetHashCode | (从 Object 继承。) | |
GetType | (从 Object 继承。) | |
ReadBackupHeader | Reads the backup header and returns information about the media contents. | |
ReadFileList | Returns the list of database files on the targeted media. | |
ReadMediaHeader | Reads the media header and returns the media header values. | |
ReadSuspectPageTable | Returns the suspect page table for the targeted instance of SQL Server. | |
Script | Generates a Transact-SQL script that can be used to re-create the restore operation. | |
SetMediaPassword(SecureString) | 已过时。为介质集设置密码。 (从 BackupRestoreBase 继承。) | |
SetMediaPassword(String) | 已过时。为介质集设置密码。 (从 BackupRestoreBase 继承。) | |
SetPassword(SecureString) | 为备份集设置密码。 (从 BackupRestoreBase 继承。) | |
SetPassword(String) | 为备份集设置密码。 (从 BackupRestoreBase 继承。) | |
SqlRestore | Performs a restore operation on the specified server. | |
SqlRestoreAsync | Performs a restore operation asynchronously. | |
SqlVerify(Server) | Checks the media on the instance of SQL Server that is represented by the specified Server object. | |
SqlVerify(Server, Boolean) | Checks the media on instance of SQL Server that is represented by the specified Server object and loads backup history information into the history tables. | |
SqlVerify(Server, String%) | Checks the media on the instance of SQL Server that is represented by the specified Server object and returns an error message. | |
SqlVerify(Server, Boolean, String%) | Checks the media on the instance of SQL Server that is represented by the specified Server object, loads backup history information into the history tables, and returns an error message. | |
SqlVerifyAsync(Server) | Checks the media on the instance of SQL Server that is represented by the specified Server object asynchronously. | |
SqlVerifyAsync(Server, Boolean) | Checks the media on the instance of SQL Server that is represented by the specified Server object asynchronously and loads backup history information into the history tables. | |
SqlVerifyLatest(Server) | Verifies the most recent backup but does not restore it, and checks to see that the backup set is complete and the entire backup is readable. | |
SqlVerifyLatest(Server, SqlVerifyAction) | Verifies the most recent backup with the specified action, and checks to see that the backup set is complete and the entire backup is readable. | |
SqlVerifyLatest(Server, String%) | Verifies the most recent backup but does not restore it, checks to see that the backup set is complete and the entire backup is readable, and returns an error message. | |
SqlVerifyLatest(Server, SqlVerifyAction, String%) | Verifies the most recent backup with the specified action, checks to see that the backup set is complete and the entire backup is readable, and returns an error message. | |
ToString | (从 Object 继承。) | |
Wait | 等待当前备份或还原操作完成后再进入下一进程。 (从 BackupRestoreBase 继承。) |
页首
事件
名称 | 说明 | |
---|---|---|
Complete | 在备份或还原操作完成后发生。 (从 BackupRestoreBase 继承。) | |
Information | 当 Microsoft SQL Server 发出不能被 Complete NextMedia 或 PercentComplete 事件处理的任何信息性消息时发生。 (从 BackupRestoreBase 继承。) | |
NextMedia | 在备份或还原操作耗尽目标设备中的介质时发生。 (从 BackupRestoreBase 继承。) | |
PercentComplete | 在备份或还原操作达到完成单元时发生。 (从 BackupRestoreBase 继承。) |
页首
字段
名称 | 说明 | |
---|---|---|
VerifyComplete | Specifies the VerifyCompleteEventHandler. |
页首
注释
By using a Restore object you can do the following:
Restore all or part of a database.
Restore backup images of transaction log records.
Verify the integrity of backup media.
Report the contents of backup media.
Monitor a restore operation, reporting status to the user.
SQL Server can write a backup to one of four media types: disk, tape, named pipe, or a backup device. SQL Server supports backup striping. A striped backup is one directed to more than a single device. Striping is supported to a single media type only. That is, a backup can be written to two tape devices. Half of a backup cannot be written to a tape device and the other half to a disk.
At a minimum, supply values for a restore source when using a Restore object. Use one media type property to specify the restore operation source.
Setting other properties in the Restore object may be required by the restore operation desired.
Thread Safety
此类型的任何公共静态(Microsoft Visual Basic 中的 Shared)成员在多线程操作中是安全的。但不保证所有实例成员都是线程安全的。
To get Restore object properties, users can be a member of the public fixed server role.
To set Restore object properties, users must have CREATE DATABASE permission on the server, or be a member of sysadmin or dbcreator fixed server roles, or be a member of db_owner fixed database role.
To perform a restore operation, users must have CREATE DATABASE permission on the server, or be a member of sysadmin or dbcreator fixed server roles. If the database already exists, then members of the db_owner fixed database role can also perform a restore operation.
示例
The following code example demonstrates how to create a normal and an asynchronous backup of the AdventureWorks2012 database and use each of those backups to restore it.
VB
'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Reference the AdventureWorks2012 database.
Dim db As Database
db = srv.Databases("AdventureWorks2012")
'Store the current recovery model in a variable.
Dim recoverymod As Integer
recoverymod = db.DatabaseOptions.RecoveryModel
'Define a Backup object variable.
Dim bk As New Backup
'Specify the type of backup, the description, the name, and the database to be backed up.
bk.Action = BackupActionType.Database
bk.BackupSetDescription = "Full backup of AdventureWorks2012"
bk.BackupSetName = "AdventureWorks2012 Backup"
bk.Database = "AdventureWorks2012"
'Declare a BackupDeviceItem by supplying the backup device file name in the constructor, and the type of device is a file.
Dim bdi As BackupDeviceItem
bdi = New BackupDeviceItem("Test_Full_Backup1", DeviceType.File)
'Add the device to the Backup object.
bk.Devices.Add(bdi)
'Set the Incremental property to False to specify that this is a full database backup.
bk.Incremental = False
'Set the expiration date.
Dim backupdate As New Date
backupdate = New Date(2006, 10, 5)
bk.ExpirationDate = backupdate
'Specify that the log must be truncated after the backup is complete.
bk.LogTruncation = BackupTruncateLogType.Truncate
'Run SqlBackup to perform the full database backup on the instance of SQL Server.
bk.SqlBackup(srv)
'Inform the user that the backup has been completed.
Console.WriteLine("Full Backup complete.")
'Remove the backup device from the Backup object.
bk.Devices.Remove(bdi)
'Make a change to the database: in this case, add a table called test_table.
Dim t As Table
t = New Table(db, "test_table")
Dim c As Column
c = New Column(t, "col", DataType.Int)
t.Columns.Add(c)
t.Create()
'Create another file device for the differential backup and add the Backup object.
Dim bdid As BackupDeviceItem
bdid = New BackupDeviceItem("Test_Differential_Backup1", DeviceType.File)
'Add the device to the Backup object.
bk.Devices.Add(bdid)
'Set the Incremental property to True for a differential backup.
bk.Incremental = True
'Run SqlBackup to perform the incremental database backup on the instance of SQL Server.
bk.SqlBackup(srv)
'Inform the user that the differential backup is complete.
Console.WriteLine("Differential Backup complete.")
'Remove the device from the Backup object.
bk.Devices.Remove(bdid)
'Delete the AdventureWorks2012 database before restoring it.
srv.Databases("AdventureWorks2012").Drop()
'Define a Restore object variable.
Dim rs As Restore
rs = New Restore
'Set the NoRecovery property to true, so the transactions are not recovered.
rs.NoRecovery = True
'Add the device that contains the full database backup to the Restore object.
rs.Devices.Add(bdi)
'Specify the database name.
rs.Database = "AdventureWorks2012"
'Restore the full database backup with no recovery.
rs.SqlRestore(srv)
'Inform the user that the Full Database Restore is complete.
Console.WriteLine("Full Database Restore complete.")
'Remove the device from the Restore object.
rs.Devices.Remove(bdi)
'Set te NoRecovery property to False.
rs.NoRecovery = False
'Add the device that contains the differential backup to the Restore object.
rs.Devices.Add(bdid)
'Restore the differential database backup with recovery.
rs.SqlRestore(srv)
'Inform the user that the differential database restore is complete.
Console.WriteLine("Differential Database Restore complete.")
'Remove the device.
rs.Devices.Remove(bdid)
'Set the database recovery mode back to its original value.
srv.Databases("AdventureWorks2012").DatabaseOptions.RecoveryModel = recoverymod
'Drop the table that was added.
srv.Databases("AdventureWorks2012").Tables("test_table").Drop()
srv.Databases("AdventureWorks2012").Alter()
'Remove the backup files from the hard disk.
My.Computer.FileSystem.DeleteFile("C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Test_Full_Backup1")
My.Computer.FileSystem.DeleteFile("C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Test_Differential_Backup1")
Powershell
$srv = new-object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database
$db = $srv.Databases.Item("AdventureWorks2012")
$rs = new-object Microsoft.SqlServer.Management.Smo.Restore
$rs.NoRecovery = $TRUE
$rs.Devices.Add($bdi)
$recoverymod = $db.DatabaseOptions.RecoveryModel
$bk = new-object Microsoft.SqlServer.Management.Smo.Backup
$bk.Action = [Microsoft.SqlServer.Management.Smo.BackupActionType]::Database
$bk.BackupSetDescription = "Full backup of AdventureWorks2012"
$bk.BackupSetName = "AdventureWorks2012 Backup"
$bk.Database = "AdventureWorks2012"
$bdi = new-object Microsoft.SqlServer.management.Smo.BackupDeviceItem("Test_Full_Backup1", [Microsoft.SqlServer.Management.Smo.DeviceType]::File)
$bk.Devices.Add($bdi)
$bk.Incremental = $FALSE
$backupdate = new-object System.DateTime(2009, 3, 2)
$bk.ExpirationDate = $backupdate
$bk.LogTruncation = [Microsoft.SqlServer.Management.Smo.BackupTruncateLogType]::Truncate
$bk.SqlBackup($srv)
Write-Host "Full Backup complete."
$bk.Devices.Remove($bdi)
$t = new-object Microsoft.SqlServer.Management.Smo.Table($db, "test_table")
$c = new-object Microsoft.SqlServer.Management.Smo.Column($t, "col", [Microsoft.SqlServer.Management.Smo.DataType]::Int)
$t.Columns.Add($c)
$t.Create()
$bdid = new-object Microsoft.SqlServer.Management.Smo.BackupDeviceItem("Test_Differential_Backup1", [Microsoft.SqlServer.Management.Smo.DeviceType]::File)
$bk.Devices.Add($bdid)
$bk.Incremental = $TRUE
$bk.SqlBackup($srv)
Write-Host "Differential Backup complete."
$bk.Devices.Remove($bdid)
$rs.Database = "AdventureWorks2012"
$srv.Databases["AdventureWorks2012"].Drop()
$rs.SqlRestore($srv)
Write-Host "Full Database Restore complete."
$rs.Devices.Remove($bdi)
$rs.NoRecovery = $FALSE
$rs.Devices.Add($bdid)
$rs.SqlRestore($srv)
Write-Host "Differential Database Restore complete."
$rs.Devices.Remove($bdid)
$srv.Databases["AdventureWorks2012"].DatabaseOptions.RecoveryModel = $recoverymod
$srv.Databases["AdventureWorks2012"].Tables["test_table"].Drop()
$srv.Databases["AdventureWorks2012"].Alter()
remove-item C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Test_Full_Backup1
remove-item C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Test_Differential_Backup1
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。不保证所有实例成员都是线程安全的。
请参阅
参考
Microsoft.SqlServer.Management.Smo 命名空间