SQL SERVER数据库备份到网络硬盘上

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

if exists (select * from sysobjects where id = OBJECT_ID('[P_DB_BK]') and xtype='P')

DROP PROC [P_DB_BK]

GO

CREATE PROC [dbo].[P_DB_BK]

@SavePath nvarchar(150),   --@SavePath =>保存的网络地址目录

@IP nvarchar(20),          --@IP       =>IP地址

@UserName nvarchar(30),    --@UserName =>访问网络地址的用户名

@Password nvarchar(20),    --@Password =>访问网络地址的密码

@DBName nvarchar(50),      --@DBName   =>需要备份的数据库名字

@SaveFileName nvarchar(150)--@SaveFileName =>保存备份文件的名字

 

WITH ENCRYPTION AS

 

/****** 对象: StoredProcedure [dbo].[P_DB_BK]   

#desc 【存储过程的说明】:执行数据库备份到网络磁盘

#author          【作者】:todd

#contact     【联系方式】:zhou860109@163.com

#version         【版本】:V1.0

#param       【参数说明】:

                          @SavePath =>保存的网络地址目录

                          @IP       =>IP地址

                          @UserName =>访问网络地址的用户名

                          @Password =>访问网络地址的密码

                          @DBName   =>需要备份的数据库名字

                          @SaveFileName =>保存备份文件的名字

#create date 【脚本日期】: 07/21/2011 16:21:08

 

Example      【调用例子】:

                     GO

                     DECLARE    @return_value int

 

                     EXEC   @return_value = [dbo].[P_DB_BK]

                            @SavePath = N'\\192.168.1.2\db_bk\test',

                            @IP = N'192.168.1.2',

                            @UserName = N'administrator',

                            @Password = N'123456',

                            @DBName = N'test',

                            @SaveFileName = N'test_2011_07_21.bak'

 

                     SELECT 'Return Value' = @return_value

 

                     GO

*/

 

BEGIN

 

EXEC sp_configure N'show advanced options', N'1'

RECONFIGURE WITH OVERRIDE

EXEC sp_configure N'xp_cmdshell', N'1'

RECONFIGURE WITH OVERRIDE

EXEC sp_configure N'show advanced options', N'0'

RECONFIGURE WITH OVERRIDE

declare @TempInfo nvarchar(500)

select @TempInfo='net use z: '+@SavePath+' "'+@Password+'" /user:'+@IP+'\'+@UserName

exec master..xp_cmdshell @TempInfo

select @TempInfo='C:\'+@SaveFileName

backup database @DBName to disk=@TempInfo with init

select @TempInfo='copy C:\'+@SaveFileName+' z:'

exec master..xp_cmdshell @TempInfo

exec master..xp_cmdshell 'net use z: /delete'

select @TempInfo='del C:\'+@SaveFileName

exec master..xp_cmdshell @TempInfo

 

END

 

 

 

 

posted @ 2011-07-22 12:42  星释天狼  阅读(3458)  评论(0)    收藏  举报