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 Northwind TO DISK=@Devname_data WITH INIT END IF @baklog=0 BEGIN BACKUP LOG Northwind WITH NO_LOG BACKUP LOG Northwind TO DISK=@DevName_log WITH INIT,NO_TRUNCATE END END ELSE BEGIN IF @bakdb=0 BEGIN BACKUP DATABASE Northwind TO DISK=@DevName_data WITH NOINIT END IF @baklog=0 BEGIN BACKUP LOG Northwind WITH NO_LOG BACKUP LOG Northwind TO DISK=@DevName_log WITH NOINIT,NO_TRUNCATE END END END SELECT @retmsg='数据库备份成功!' END
IF @kind='restore' BEGIN RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE SELECT @retmsg='恢复数据库成功!' END
不用企业管理器,SQL如何写?我要用Delphi来实现的!
@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 DBCC CHECKDB(Northwind)
/***********************************************************
** 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 Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END
IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END
RETURN 0
EXEC GY_DBBak 0,'d:\001',0,0,0,'backup',@msg output
print @msg
go
============================返回结果================================'Northwind' 的 DBCC 结果。
'sysobjects' 的 DBCC 结果。
对象 'sysobjects' 有 106 行,这些行位于 3 页中。
'sysindexes' 的 DBCC 结果。
对象 'sysindexes' 有 88 行,这些行位于 4 页中。
'syscolumns' 的 DBCC 结果。
对象 'syscolumns' 有 523 行,这些行位于 9 页中。
'systypes' 的 DBCC 结果。
对象 'systypes' 有 26 行,这些行位于 1 页中。
'syscomments' 的 DBCC 结果。
对象 'syscomments' 有 133 行,这些行位于 8 页中。
'sysfiles1' 的 DBCC 结果。
对象 'sysfiles1' 有 2 行,这些行位于 1 页中。
'syspermissions' 的 DBCC 结果。
对象 'syspermissions' 有 58 行,这些行位于 1 页中。
'sysusers' 的 DBCC 结果。
对象 'sysusers' 有 12 行,这些行位于 1 页中。
'sysproperties' 的 DBCC 结果。
对象 'sysproperties' 有 0 行,这些行位于 0 页中。
'sysdepends' 的 DBCC 结果。
对象 'sysdepends' 有 399 行,这些行位于 2 页中。
'sysreferences' 的 DBCC 结果。
对象 'sysreferences' 有 13 行,这些行位于 1 页中。
'sysfulltextcatalogs' 的 DBCC 结果。
对象 'sysfulltextcatalogs' 有 0 行,这些行位于 0 页中。
'sysfulltextnotify' 的 DBCC 结果。
对象 'sysfulltextnotify' 有 0 行,这些行位于 0 页中。
'sysfilegroups' 的 DBCC 结果。
对象 'sysfilegroups' 有 1 行,这些行位于 1 页中。
'Orders' 的 DBCC 结果。
对象 'Orders' 有 830 行,这些行位于 20 页中。
'Products' 的 DBCC 结果。
对象 'Products' 有 77 行,这些行位于 1 页中。
'Order Details' 的 DBCC 结果。
对象 'Order Details' 有 2155 行,这些行位于 9 页中。
'CustomerCustomerDemo' 的 DBCC 结果。
对象 'CustomerCustomerDemo' 有 0 行,这些行位于 0 页中。
'CustomerDemographics' 的 DBCC 结果。
对象 'CustomerDemographics' 有 0 行,这些行位于 0 页中。
'Region' 的 DBCC 结果。
对象 'Region' 有 4 行,这些行位于 1 页中。
'Territories' 的 DBCC 结果。
对象 'Territories' 有 53 行,这些行位于 1 页中。
'EmployeeTerritories' 的 DBCC 结果。
对象 'EmployeeTerritories' 有 49 行,这些行位于 1 页中。
'pbcattbl' 的 DBCC 结果。
对象 'pbcattbl' 有 0 行,这些行位于 0 页中。
'pbcatcol' 的 DBCC 结果。
对象 'pbcatcol' 有 0 行,这些行位于 0 页中。
'pbcatfmt' 的 DBCC 结果。
对象 'pbcatfmt' 有 20 行,这些行位于 1 页中。
'pbcatvld' 的 DBCC 结果。
对象 'pbcatvld' 有 0 行,这些行位于 0 页中。
'pbcatedt' 的 DBCC 结果。
对象 'pbcatedt' 有 21 行,这些行位于 1 页中。
'Employees' 的 DBCC 结果。
对象 'Employees' 有 9 行,这些行位于 1 页中。
'Categories' 的 DBCC 结果。
对象 'Categories' 有 8 行,这些行位于 1 页中。
'Customers' 的 DBCC 结果。
对象 'Customers' 有 91 行,这些行位于 3 页中。
'Shippers' 的 DBCC 结果。
对象 'Shippers' 有 3 行,这些行位于 1 页中。
'Suppliers' 的 DBCC 结果。
对象 'Suppliers' 有 29 行,这些行位于 1 页中。
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'Northwind' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
服务器: 消息 15045,级别 16,状态 1,过程 sp_addumpdevice,行 47
逻辑名称不能是 NULL。
服务器: 消息 15045,级别 16,状态 1,过程 sp_addumpdevice,行 47
逻辑名称不能是 NULL。
服务器: 消息 3038,级别 16,状态 1,过程 GY_DBBak,行 52
文件名 '' 用作备份设备名时无效。请用有效文件名重新发出 BACKUP 语句。
服务器: 消息 3013,级别 16,状态 1,过程 GY_DBBak,行 52
BACKUP DATABASE 操作异常终止。
服务器: 消息 3038,级别 16,状态 1,过程 GY_DBBak,行 58
文件名 '' 用作备份设备名时无效。请用有效文件名重新发出 BACKUP 语句。
服务器: 消息 3013,级别 16,状态 1,过程 GY_DBBak,行 58
BACKUP LOG 操作异常终止。
数据库备份成功!