sql存储过程----备份数据库

1 CREATE   procedure  dbo.usp_backup_database
 2
 3 @p_dbname   varchar ( 50 ), -- 备份数据库名称
 4 @p_type   varchar ( 50 ), -- 备份类型,fullorlog
 5 @filename   varchar ( 8000 ) = ''  OUTPUT
 6
 7 as
 8
 9 SET  NOCOUNT  ON
10 SET  DATEFIRST  1
11
12 DECLARE   @sql   varchar ( 8000 )
13 DECLARE   @datetime   varchar ( 30 )
14 DECLARE   @path   varchar ( 100 )
15
16 SET   @path   =   ' E:\backup\sql_data\ '
17
18 IF   @p_type = ' full '
19 BEGIN
20   SET   @datetime   =   CONVERT ( varchar ( 20 ), getdate (), 20 )
21   SET   @datetime   =   REPLACE ( @datetime , '   ' , ' _ ' )
22   SET   @datetime   =   ' DB_Full_ ' + REPLACE ( @datetime , ' : ' , ' - ' )
23
24   SET   @filename   =   @datetime + ' .bak '''
25
26   SET   @sql   =   ' BACKUP DATABASE  '   +   @p_dbname
27   SET   @sql   =   @sql   +   '  TO DISK = N ''' + @path + @p_dbname   +   ' \ ' + @filename
28   SET   @sql   =   @sql   +   '  WITH INIT '
29 END
30
31 IF   @p_type = ' diff '
32 BEGIN
33   SET   @datetime   =   ' DB_Diff_ ' + CAST ( DATEPART  ( dw ,  getDate ())  AS   char ( 1 ))
34   SET   @filename   =   @datetime + ' .diff '''
35   SET   @sql   =   ' BACKUP DATABASE  '   +   @p_dbname
36   SET   @sql   =   @sql   +   '  TO DISK = N ''' + @path + @p_dbname   +   ' \ ' + @filename
37   SET   @sql   =   @sql   +   '  WITH INIT,DIFFERENTIAL '
38 END
39
40 IF   @p_type = ' log '
41 BEGIN
42   SET   @datetime   =   ' DB_Log_ ' + DATENAME  ( hh ,  getdate () )
43   SET   @filename   =   @datetime + ' .log ''   '
44   SET   @sql   =   ' BACKUP LOG  ' +   @p_dbname
45   SET   @sql   =   @sql   +   '  TO DISK = N ''' + @path + @p_dbname   +   ' \ ' + @filename
46   SET   @sql   =   @sql   +   '  WITH INIT '
47 END
48
49
50 -- SELECT @sql
51
52 EXEC  ( @sql )
53
54 SET   @filename   =   REPLACE ( @filename , '''' , '' )
55 GO

你可能感兴趣的:(存储过程)