一个 SQLDMO 的 Restore 的问题

alex_fan 2003-09-25 08:58:58
现在兄弟碰到这样一个数据库的backup和restore的问题

我使用SQLDMO.Backup对象的oBackup.Action = SQLDMOBackup_Database
来backup数据库a到文件:dba.dat

现在呢,想进行恢复成数据库b,但是要求现在数据库中的数据库a不变

试着使用SQLDMO.Restore对象的oRestore.Action = SQLDMORestore_Database
,并且修改oRestore.Database = "b" 来进行恢复 , 没有成功。

希望高手指点
...全文
56 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyun2003 2003-09-26
  • 打赏
  • 举报
回复
在程序里好象不能直接恢复的。
hdslah 2003-09-26
  • 打赏
  • 举报
回复
非常關注
cngis 2003-09-26
  • 打赏
  • 举报
回复
重要 在备份和还原操作中使用一致的媒体名称可以为用于还原操作的媒体提供额外的安全检查。


MEDIAPASSWORD = { mediapassword | @mediapassword_variable}

提供媒体集的密码。MEDIAPASSWORD 是一个字符串。

如果格式化媒体集时提供了密码,则访问该媒体集上的任何备份集时都必须提供该密码。

MOVE 'logical_file_name' TO 'operating_system_file_name'

指定应将给定的 logical_file_name 移到 operating_system_file_name。默认情况下,logical_file_name 将还原到其原始位置。如果使用 RESTORE 语句将数据库复制到相同或不同的服务器上,则可能需要使用 MOVE 选项重新定位数据库文件以避免与现有文件冲突。可以在不同的 MOVE 语句中指定数据库内的每个逻辑文件。



说明 使用 RESTORE FILELISTONLY 从备份集中获取逻辑文件列表。


有关更多信息,请参见复制数据库。

n

占位符,表示可通过指定多个 MOVE 语句移动多个逻辑文件。

NORECOVERY

指示还原操作不回滚任何未提交的事务。如果需要应用另一个事务日志,则必须指定 NORECOVERY 或 STANDBY 选项。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,则默认为 RECOVERY。

当还原数据库备份和多个事务日志时,或在需要多个 RESTORE 语句时(例如在完整数据库备份后进行差异数据库备份),SQL Server 要求在除最后的 RESTORE 语句外的所有其它语句上使用 WITH NORECOVERY 选项。



说明 如果指定 NORECOVERY 选项,数据库将处于这个中间的未恢复状态而不可用。


当用于文件或文件组还原操作时,NORECOVERY 强制数据库在还原操作结束后保持还原状态。这在以下情况中很有用:

还原脚本正在运行并且始终要应用日志。


使用文件还原序列,并且在两次还原操作之间不能使用数据库。
RECOVERY

指示还原操作回滚任何未提交的事务。在恢复进程后即可随时使用数据库。

如果安排了后续 RESTORE 操作(RESTORE LOG 或从差异数据库备份 RESTORE DATABASE),则应改为指定 NORECOVERY 或 STANDBY。

如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,则默认为 RECOVERY。当从 SQL Server 早期版本中还原备份集时,可能要求将数据库升级。如果指定了 WITH RECOVERY,升级将自动进行。有关更多信息,请参见事务日志备份。

STANDBY = undo_file_name

指定撤消文件名以便可以取消恢复效果。撤消文件的大小取决于因未提交的事务所导致的撤消操作量。如果 NORECOVERY、RECOVERY 和 STANDBY 均未指定,则默认为 RECOVERY。

STANDBY 允许将数据库设定为在事务日志还原期间只能读取,并且可用于备用服务器情形,或用于需要在日志还原操作之间检查数据库的特殊恢复情形。

如果指定的撤消文件名不存在,SQL Server 将创建该文件。如果该文件已存在,则 SQL Server 将重写它。

对同一数据库的连续还原可以使用相同的撤消文件。有关更多信息,请参见使用备用服务器。



重要 如果指定的撤消文件所在的驱动器上没有可用的磁盘空间,还原操作将停止。


如果必须升级数据库,则不允许 STANDBY。

KEEP_REPLICATION

指示还原操作在将发布的数据库还原到创建它的服务器以外的服务器上时保留复制设置。当设置复制与日志传送一同使用时,需使用 KEEP_REPLICATION。这样,当在备用服务器上还原数据库或日志备份并且恢复数据库时,可防止删除复制设置。还原备份时若指定了该选项,则不能选择 NORECOVERY 选项。

NOUNLOAD

指定不在 RESTORE 后从磁带机中自动卸载磁带。设置始终为 NOUNLOAD,直到指定 UNLOAD 为止。该选项只用于磁带设备。如果对 RESTORE 使用非磁带设备,将忽略该选项。

NOREWIND

指定 SQL Server 在备份操作完成后使磁带保持打开。磁带保持打开将防止其它过程访问磁带。直到颁发 REWIND 或 UNLOAD 语句,或直到服务器关闭时,才释放该磁带。通过查询 master 数据库中的 sysopentapes 表可查找当前打开的一系列磁带。

NOREWIND 意即 NOUNLOAD。该选项只用于磁带设备。如果对 RESTORE 使用非磁带设备,将忽略该选项。

REWIND

指定 SQL Server 将释放磁带和倒带。如果 NOREWIND 和 REWIND 均未指定,则默认设置为 REWIND。该选项只用于磁带设备。如果对 RESTORE 使用非磁带设备,将忽略该选项。

UNLOAD

指定在还原完成后自动倒带并卸载磁带。启动新用户会话时其默认设置为 UNLOAD。设置始终为 UNLOAD,直到指定 NOUNLOAD 为止。该选项只用于磁带设备。如果对 RESTORE 使用非磁带设备,将忽略该选项。

REPLACE

指定即使存在另一个具有相同名称的数据库,SQL Server 也应该创建指定的数据库及其相关文件。在这种情况下将删除现有的数据库。如果没有指定 REPLACE 选项,则将进行安全检查以防止意外重写其它数据库。安全检查可确保在以下情况中,RESTORE DATABASE 语句不会将数据库还原到当前服务器:

在 RESTORE 语句中命名的数据库已经在当前服务器上存在,并且


该数据库名称与备份集中记录的数据库名称不同。
若无法验证现有文件是否属于正在还原的数据库,则 REPLACE 也允许 RESTORE 重写该文件。RESTORE通常拒绝重写已存在的文件。

RESTART

指定 SQL Server 应重新启动被中断的还原操作。RESTART 从中断点重新启动还原操作。



重要 只有当直接从磁带媒体还原以及跨越多个磁带卷还原时才能使用该选项。


STATS [= percentage]

每当另一个 percentage 结束时显示一条消息,并用于测量进度。如果省略 percentage,则 SQL Server 每完成 10 个百分比显示一条消息。

PARTIAL

指定部分还原操作。应用程序或用户错误经常影响到数据库的某个孤立部分(如表)。这类错误的例子包括无效更新或错误地除去表。为支持从这些事件恢复,SQL Server 提供可将数据库的部分内容还原到另一个位置的机制,以使损坏或丢失的数据可复制回原始数据库。

部分还原操作的粒度是数据库文件组。主要文件和文件组始终同指定的文件及其相应的文件组一起还原。还原结果是数据库的一个子集。没有还原的文件组被标记为脱机,不能对其进行访问。

有关更多信息,请参见部分数据库还原操作。

<file_or_filegroup>

指定包括在数据库还原中的逻辑文件或文件组的名称。可以指定多个文件或文件组。

FILE = {logical_file_name | @logical_file_name_var}
命名一个或更多包括在数据库还原中的文件。

FILEGROUP = {logical_filegroup_name | @logical_filegroup_name_var}
命名一个或更多包括在数据库还原中的文件组。
当使用此选项时,最后一个文件或文件组还原操作完成后,必须将事务日志应用于数据库文件,以便前滚文件使之与数据库的其余部分保持一致。如果被还原的文件自上次备份后没有一个做过修改,则不必应用事务日志。RESTORE 语句向用户通告这一情况。

n

是一个占位符,表示可以指定多个文件和文件组。对文件或文件组的最大个数没有限制。

LOG

指定对该数据库应用事务日志备份。必须按有序顺序应用事务日志。SQL Server 检查已备份的事务日志,以确保按正确的序列将事务装载到正确的数据库。若要应用多个事务日志,请在除最后一个外的所有还原操作中使用 NORECOVERY 选项。有关更多信息,请参见事务日志备份。

STOPAT = date_time | @date_time_var

指定将数据库还原到其在指定的日期和时间时的状态。如果对 STOPAT 使用变量,则该变量必须是 varchar、char、smalldatetime 或 datetime 数据类型。只有在指定的日期和时间前写入的事务日志记录才能应用于数据库。



说明 如果指定的 STOPAT 时间超出 RESTORE LOG 操作的结束范围,数据库将处于不可恢复的状态,其效果与在 RESTORE LOG 中使用 NORECOVERY 一样。


STOPATMARK = 'mark_name' [ AFTER datetime ]

指定恢复到指定的标记,包括包含该标记的事务。如果省略 AFTER datetime,恢复操作将在含有指定名称的第一个标记处停止。如果指定 AFTER datetime,恢复操作将在含有在 datetime 时或 datetime 时之后的指定名称的第一个标记处停止。

STOPBEFOREMARK = 'mark_name' [ AFTER datetime ]

指定恢复到指定的标记,但不包括包含该标记的事务。如果省略 AFTER datetime,恢复操作将在含有指定名称的第一个标记处停止。如果指定 AFTER datetime,恢复操作将在含有在 datetime 时或 datetime 时之后的指定名称的第一个标记处停止。

cngis 2003-09-26
  • 打赏
  • 举报
回复
在程序里是可以的
RESTORE DATABASE { database_name | @database_name_var }
[ FROM < backup_device > [ ,...n ] ]
[ WITH
[ RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[ ,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]
参数
DATABASE

指定从备份还原整个数据库。如果指定了文件和文件组列表,则只还原那些文件和文件组。

{database_name | @database_name_var}

是将日志或整个数据库还原到的数据库。如果将其作为变量 (@database_name_var) 提供,则可将该名称指定为字符串常量 (@database_name_var = database name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。

FROM

指定从中还原备份的备份设备。如果没有指定 FROM 子句,则不会发生备份还原,而是恢复数据库。可用省略 FROM 子句的办法尝试恢复通过 NORECOVERY 选项还原的数据库,或切换到一台备用服务器上。如果省略 FROM 子句,则必须指定 NORECOVERY、RECOVERY 或 STANDBY。

< backup_device >

指定还原操作要使用的逻辑或物理备份设备。可以是下列一种或多种形式:

{'logical_backup_device_name' | @logical_backup_device_name_var}
是由 sp_addumpdevice 创建的备份设备(数据库将从该备份设备还原)的逻辑名称,该名称必须符合标识符规则。如果作为变量 (@logical_backup_device_name_var) 提供,则可以指定字符串常量 (@logical_backup_device_name_var = logical_backup_device_name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量作为备份设备名。

{DISK | TAPE } =
'physical_backup_device_name' | @physical_backup_device_name_var
允许从命名磁盘或磁带设备还原备份。磁盘或磁带的设备类型应该用设备的真实名称(例如:完整的路径和文件名)来指定:DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\Mybackup.dat' 或 TAPE = '\\.\TAPE0'。如果指定为变量 (@physical_backup_device_name_var),则设备名称可以是字符串常量 (@physical_backup_device_name_var = 'physical_backup_device_name') 或字符串数据类型(ntext 或 text 数据类型除外)的变量。
如果使用的是含有 UNC 名称的网络服务器或已重新定向的驱动器号,则请指定磁盘的设备类型。运行 SQL Server 时所使用的帐户必须具有对远程计算机或网络服务器的 READ 访问权,这样才能执行RESTORE 操作。

n

是表示可以指定多个备份设备和逻辑备份设备的占位符。备份设备或逻辑备份设备最多可以为 64 个。

RESTRICTED_USER

限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问新近还原的数据库。在 SQL Server 2000 中,RESTRICTED_USER 替换了选项 DBO_ONLY。提供 DBO_ONLY 只是为了向后兼容。

该选项可与 RECOVERY 选项一起使用。

有关更多信息,请参见设置数据库选项。

FILE = { file_number | @file_number }

标识要还原的备份集。例如,file_number 为 1 表示备份媒体上的第一个备份集,file_number 为 2 表示第二个备份集。

PASSWORD = { password | @password_variable }

提供备份集的密码。PASSWORD 是一个字符串。如果在创建备份集时提供了密码,则从备份集执行还原操作时必须提供密码。

有关使用密码的更多信息,请参见"权限"。

MEDIANAME = {media_name | @media_name_variable}

指定媒体名称。如果提供媒体名称,该名称必须与备份卷上的媒体名称相匹配,否则还原操作将终止。如果 RESTORE 语句没有给出媒体名称,将不对备份卷执行媒体名称匹配检查。


34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧