Transact-SQL 参考
sp_addumpdevice
将备份设备添加到 Microsoft® SQL Server™。语法
sp_addumpdevice [ @devtype = ] 'device_type' ,
[ @logicalname = ] 'logical_name' ,
[ @physicalname = ] 'physical_name'
[ , { [ @cntrltype = ] controller_type
| [ @devstatus = ] 'device_status'
}
]参数
[@devtype =] 'device_type',备份设备的类型,device_type 的数据类型为 varchar(20),没有默认设置,可以是下列值之一。值 描述
disk 硬盘文件作为备份设备。
pipe 命名管道。
tape 由 Microsoft Windows NT® 支持的任何磁带设备。如果 device 是 tape,则其默认值为 noskip。
[@logicalname =] 'logical_name'备份设备的逻辑名称,该逻辑名称用于 BACKUP 和 RESTORE 语句中,logical_name 的数据类型为 sysname,没有默认值,并且不能为 NULL。[@physicalname =] 'physical_name'备份设备的物理名称。物理名称必须遵照操作系统文件名称的规则或者网络设备的通用命名规则,并且必须包括完整的路径。physical_name 的数据类型为 nvarchar(260),没有默认值,并且不能为 NULL。当创建远程网络位置上的备份设备时,请确保在其下启动 SQL Server 的名称对远程的计算机有适当的写入能力。如果要添加磁带设备,那么该参数必须是 Windows NT® 指派给本地磁带设备的物理名称,例如 \\.\TAPE0(对于计算机中的第一个磁带设备)。磁带设备必须连接到服务器计算机上,不能远程使用。如果名称包含非字母数字的字符,请用引号将其引起来。 [@cntrltype =] controller_type当创建备份设备时,该参数并不是必需的。为脚本提供该参数比较合适,然而 SQL Server 会将其忽略。controller_type 的数据类型为 smallint,默认值为 NULL,可以是下列值之一。值 描述
2 当 device_type 为 disk 时使用。
5 当 device_type 为 tape 时使用。
6 当 device_type 为 pipe 时使用。
[@devstatus =] 'device_status'指明是读取 (noskip) ANSI 磁带标签,还是忽略 (skip) 它。device_status 的数据类型为 varchar(40),默认值为 noskip。说明 可以指定 controller_type 或 device_status,但二者不要同时指定。
返回代码值
0(成功)或 1(失败)结果集
无注释
sp_addumpdevice 将备份设备添加到 master.dbo.sysdevices 表。可以在 BACKUP 和 RESTORE 语句中对其进行逻辑引用。 所有关系和权限问题可能干扰磁盘或文件备份设备的使用。请确保对在其下启动 SQL Server 的帐户给予适当的文件权限。SQL Server 支持将磁带备份到 Windows NT 支持的磁带设备上。有关 Windows NT 支持的磁带设备的更多信息,请参见 Windows NT 的硬件兼容性列表。若要查看计算机上可用的磁带设备,请使用 SQL Server 企业管理器。对于特定的磁带驱动器,只应使用推荐的磁带(按驱动器厂商的建议)。若要使用 DAT 驱动器,请使用计算机级的 DAT 磁带 (Digital Data Storage-DDS)。 不能在事务内执行 sp_addumpdevice。权限
只有 sysadmin 和 diskadmin 固定服务器角色的成员才能执行该过程。示例
A. 添加磁盘转储设备
下面的示例添加一个名为 MYDISKDUMP 的磁盘备份设备,其物理名称为 C:\Dump\Dump1.bak。USE master
EXEC sp_addumpdevice 'disk', 'mydiskdump', 'c:\dump\dump1.bak'B. 添加网络磁盘备份设备
下面的示例显示一个远程磁盘备份设备。在其下启动 SQL Server 的名称必须对该远程文件拥有权限。USE master
EXEC sp_addumpdevice 'disk', 'networkdevice',
'\\servername\sharename\path\filename.ext'C. 添加磁带备份设备
下面的示例添加 TAPEDUMP1 设备,其物理名称为 \\.\Tape0。USE master
EXEC sp_addumpdevice 'tape', 'tapedump1',
'\\.\tape0'
请参见BACKUPRESTOREsp_dropdevicesp_helpdevice系统存储过程©1988-2000 Microsoft Corporation。保留所有权利。
sp_addumpdevice
将备份设备添加到 Microsoft® SQL Server™。语法
sp_addumpdevice [ @devtype = ] 'device_type' ,
[ @logicalname = ] 'logical_name' ,
[ @physicalname = ] 'physical_name'
[ , { [ @cntrltype = ] controller_type
| [ @devstatus = ] 'device_status'
}
]参数
[@devtype =] 'device_type',备份设备的类型,device_type 的数据类型为 varchar(20),没有默认设置,可以是下列值之一。值 描述
disk 硬盘文件作为备份设备。
pipe 命名管道。
tape 由 Microsoft Windows NT® 支持的任何磁带设备。如果 device 是 tape,则其默认值为 noskip。
[@logicalname =] 'logical_name'备份设备的逻辑名称,该逻辑名称用于 BACKUP 和 RESTORE 语句中,logical_name 的数据类型为 sysname,没有默认值,并且不能为 NULL。[@physicalname =] 'physical_name'备份设备的物理名称。物理名称必须遵照操作系统文件名称的规则或者网络设备的通用命名规则,并且必须包括完整的路径。physical_name 的数据类型为 nvarchar(260),没有默认值,并且不能为 NULL。当创建远程网络位置上的备份设备时,请确保在其下启动 SQL Server 的名称对远程的计算机有适当的写入能力。如果要添加磁带设备,那么该参数必须是 Windows NT® 指派给本地磁带设备的物理名称,例如 \\.\TAPE0(对于计算机中的第一个磁带设备)。磁带设备必须连接到服务器计算机上,不能远程使用。如果名称包含非字母数字的字符,请用引号将其引起来。 [@cntrltype =] controller_type当创建备份设备时,该参数并不是必需的。为脚本提供该参数比较合适,然而 SQL Server 会将其忽略。controller_type 的数据类型为 smallint,默认值为 NULL,可以是下列值之一。值 描述
2 当 device_type 为 disk 时使用。
5 当 device_type 为 tape 时使用。
6 当 device_type 为 pipe 时使用。
[@devstatus =] 'device_status'指明是读取 (noskip) ANSI 磁带标签,还是忽略 (skip) 它。device_status 的数据类型为 varchar(40),默认值为 noskip。说明 可以指定 controller_type 或 device_status,但二者不要同时指定。
返回代码值
0(成功)或 1(失败)结果集
无注释
sp_addumpdevice 将备份设备添加到 master.dbo.sysdevices 表。可以在 BACKUP 和 RESTORE 语句中对其进行逻辑引用。 所有关系和权限问题可能干扰磁盘或文件备份设备的使用。请确保对在其下启动 SQL Server 的帐户给予适当的文件权限。SQL Server 支持将磁带备份到 Windows NT 支持的磁带设备上。有关 Windows NT 支持的磁带设备的更多信息,请参见 Windows NT 的硬件兼容性列表。若要查看计算机上可用的磁带设备,请使用 SQL Server 企业管理器。对于特定的磁带驱动器,只应使用推荐的磁带(按驱动器厂商的建议)。若要使用 DAT 驱动器,请使用计算机级的 DAT 磁带 (Digital Data Storage-DDS)。 不能在事务内执行 sp_addumpdevice。权限
只有 sysadmin 和 diskadmin 固定服务器角色的成员才能执行该过程。示例
A. 添加磁盘转储设备
下面的示例添加一个名为 MYDISKDUMP 的磁盘备份设备,其物理名称为 C:\Dump\Dump1.bak。USE master
EXEC sp_addumpdevice 'disk', 'mydiskdump', 'c:\dump\dump1.bak'B. 添加网络磁盘备份设备
下面的示例显示一个远程磁盘备份设备。在其下启动 SQL Server 的名称必须对该远程文件拥有权限。USE master
EXEC sp_addumpdevice 'disk', 'networkdevice',
'\\servername\sharename\path\filename.ext'C. 添加磁带备份设备
下面的示例添加 TAPEDUMP1 设备,其物理名称为 \\.\Tape0。USE master
EXEC sp_addumpdevice 'tape', 'tapedump1',
'\\.\tape0'
请参见BACKUPRESTOREsp_dropdevicesp_helpdevice系统存储过程©1988-2000 Microsoft Corporation。保留所有权利。
解决方案 »
- SQL2000 误删除部分数据 怎样可以还原 求帮助
- 急:视图设计问题!在线等,谢谢大家
- 怎样用SQL脚本实现企业管理器“右击数据库->所有任务->生成SQL脚本”功能
- 哪位有准备ERP前的实施报告之类的文挡?
- 请问:因业务需要,要在一个数据库(SQLSERVER)中建立10万张表,请问会有什么问题,性能如何等等,谢谢!
- vb2005 如何连接SQL2005数据库???
- 求高手解决sql两表关联问题_______________答案正确加分
- 用dataEnvironment连接数据库的问题,极难=50?
- 如何处理这样的存储过程
- 求助!!mysql删除某个字段之前的数据。
- 有没有SQL命令,把SQL库表中的一章表导出到一个文件中,然后导回的
- 得到某表字段名串
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复
@retmsg varchar(20) output --返回信息
AS
DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)
DECLARE @RC INT SELECT @db_path = @bakpath + '.dat'
SELECT @log_path = @bakpath + 'log.dat'
SELECT @RC=0
select @DevName_data='dali',@DevName_log='dalilog' DBCC CHECKDB(数据库名)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN
EXEC sp_addumpdevice 'disk', @DevName_data,@db_path
exec sp_addumpdevice 'disk', @DevName_log,@log_path
select @rc=@@error
IF @RC<>0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END
IF @kind='backup'
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END
IF @kind='restore'
BEGIN
RESTORE DATABASE 数据库名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
RETURN 0---测试:
declare @ varchar(100)
exec gy_dbbak 0,'aa',0,0,0,'backup',@ output
select @