![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
create Procedure BackupProc
@DBName varchar(50), --要备份的的数据库
@FilePath varchar(50), --文件存放服务器,如不为本地备份,则存放服务器地址及其共享文件夹名,如'\\192.168.0.39\文件名'
@LogoUser varchar(50), --文件服务器的用户名,服务器创建的具有对共享文件夹所有权限的用户名
@LogePWD varchar(50) --文件服务器的密码
as
--Step 1 BackUp
DECLARE @DBPath varchar(100)
DECLARE @copyPath varchar(200)
SET @DBPath = 'c:\'+ @DBName + convert(varchar(10),getdate(),120) + '.bak'
backup database @DBName to disk = @DBPath
--Step 2 CopyFile
DECLARE @cmdCopy varchar(500) --拷贝语句
DECLARE @cmdLogo varchar(500) --建立session
DECLARE @cmdLogoOut varchar(500)
set @cmdCopy='copy c:\'+ @DBName+ convert(varchar(10),getdate(),120) + '.bak '
+ @FilePath +'\'+@DBName
set @cmdLogo='net use '+ @FilePath +' '+ @LogePWD +' /user:' + 'Administrator\'+
@LogoUser
set @cmdLogoOut='net use '+ @FilePath +' /delete'
exec master..xp_cmdshell @cmdLogo
exec master..xp_cmdshell @cmdCopy
exec master..xp_cmdshell @cmdLogoOut
--Step 3 Delete Old File
declare @delFile varchar(100)
declare @cmdDel varchar(200)
set @delFile = @DBName+convert(varchar(10),getdate(),120)+'.bak'
set @cmdDel='del c:\'+@delFile --删除本地备份的数据库
exec master..xp_cmdshell @cmdDel
附创建服务器的共享文件夹步骤:
1.机器A,B创建一个同名的windows用户,用户组设置为administrators,并设置相同的密码,做为备份文件夹文件夹的有效访问用户,操作:
我的电脑
--控制面板
--管理工具
--计算机管理
--用户和组
--右键用户
--新建用户
--建立一个隶属于administrator组的登陆windows的用户
2.在B机器器上,新建一个共享目录,做为备份文件的存放目录,操作:
我的电脑--D:\ 新建一个目录,名为: BAK
--右键这个新建的目录
--属性--共享
--选择"共享该文件夹"
--通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
--确定
3.设置 MSSQLSERVER 及 SQLSERVERAGENT 服务的启动用户
开始--程序--管理工具--服务
--右键 MSSQLSERVER
--属性--登陆--选择"此账户"
--输入或者选择第一步中创建的windows登录用户名
--"密码"中输入该用户的密码
--确定
--同样的方法设置 SQLSERVERAGENT
以上的文字都来自其他帖子,本人只做了稍微的修改和整合,希望对大家有用!