/备份与恢复数据库的存储过程/
create PROCEDURE GY_DBBak
@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
/你可以在ASP中调用上面的存储过程来备份数据或是还原数据/
GO
使用ASP调用上述存储过程
1
2dim db,rs,cm
3set db=server.CreateObject("ADODB.Connection")
4Set cm = Server.CreateObject("ADODB.Command")
5set rs=server.CreateObject("ADODB.Recordset")
6db.open "provider=sqloledb;database=lx1;uid=sa;pwd="
1<html>
2<head>
3<meta content="Microsoft Visual Studio 6.0" name="GENERATOR"/>
4</head>
5<body>
6<%
7'调用存储过程
8
9
10set cm.ActiveConnection = db
11'将CommandText属性设为存储过程名
12cm.CommandText = "GY_DBBak"
13'将CommandType属性设为储存过程
14cm.CommandType = 4
15
16'创建第一个参数
17
18Set param = cm.CreateParameter("@bakequip",adInteger,adParamInput,4,)
19
20'添加到Parameters集合中
21
22cm.Parameters.Append param
23
24'创建第二个参数
25
26Set param = cm.CreateParameter("@bakpath",adChar,adParamInput)
27
28'添加到Parameters集合中
29
30cm.Parameters.Append param
31
32Set param = cm.CreateParameter("@baktype",adInteger,adParamInput)
33
34'添加到Parameters集合中
35
36cm.Parameters.Append param
37
38Set param = cm.CreateParameter("@baklog",adInteger,adParamInput)
39
40'添加到Parameters集合中
41
42cm.Parameters.Append param
43
44Set param = cm.CreateParameter("@bakdb",adInteger,adParamInput)
45
46'添加到Parameters集合中
47
48cm.Parameters.Append param
49
50Set param = cm.CreateParameter("@kind",adChar,adParamInput)
51
52'添加到Parameters集合中
53
54cm.Parameters.Append param
55
56'设置输入值
57
58cm("@bakequip") = 0
59
60cm("@bakpath") = "f:\info_pub\lx"
61
62cm("@baktype") = 0
63
64cm("@baklog") = 0
65
66cm("@bak
67\---------------------------------------------------------------
68
69strSQL = "EXEC 存储过程名字 参数"
70Set rs = cn.Execute(strSQL)
71\---------------------------------------------------------------
72
73调用执行的命令是cm.execute就行了。
74
75在Set param = cm.CreateParameter("@bakequip",adInteger,adParamInput,4,)
76
77一行中,其它相类似的也是错误的
78你使用的参数错误,在ASP中,参数都应该是数字
79应该改为
80Set param = cm.CreateParameter("@bakequip",3,1)
813表示是整数类型,后面的1表示传入参数,如果是2则表示是传出,3表示先传入,后传出的值,你如果不按照数字参数的方式是绝对不行的,下面送你一个参数表:
82
83名称值 整数值 功能
84adDBTimeStamp 135 日期时间数据类型
85adDecimal 14 十进制整数值
86adDouble 5 双精度小数值
87adError 10 系统错误信息
88AdGUID 72 全域性唯一识别字(Globally unique identifier)
89adDispath 9 COM/OLE自动对象(Automation Object)
90adInteger 3 4字节有符号整数
91adIUnknown 13 COM/OLE对象
92adLongVarBinary 205 大型2字节值
93adLongVarChar 201 大型字符串值
94adLongVarWChar 203 大型未编码字符串
95adNumeric 131 十进制整数值
96adSingle 4 单精度浮点小数
97adSmallInt 2 2字节有符号整数
98adTinyInt 16 1字节有符号整数
99adUnsignedBigInt 21 8字节无符号整数
100adUnsignedInt 19 4字节无符号整数
101adUnsignedSmallInt 18 2字节无符号整数
102adUnsignedTinyInt 17 1字节无符号整数
103adUserDefined 132 用户自定义数据类型
104adVariant 12 OLE对象
105adVarBinary 204 双字节字符变量值
106adVarChar 200 字符变量值
107advarchar 202 未编码字符串变量值
108adWchar 130 未编码字符串
109
110方向值的意义如上:
111名称值 整数值 功能
112adParamInput 1 允许数据输入至该参数当中
113adParamOutput 2 允许数据输出至该参数当中
114adParamInputOutput 3 允许数据输入、输出至该参数当中
115adparamReturnValue 4 允许从一子程序中返回数据至该参数当中
116
117如果有其它问题,请联系QQ 6833899,祝你好运。</body></html>