- --SQL如何备份数据库到异机
-
- 写成存储过程,建立作业定时备份~~~
-
-
- --在sql中映射一下就可以了
- exec master..xp_cmdshell 'net use z: //yizhi/D$ "密码" /user:yizhi/administrator'
-
-
-
-
-
-
-
-
-
-
-
-
-
- --备份;with init覆盖 |noinit添加
- backup database 库名 to disk='E:/H_BACKUP.bak' with init
-
- --COPY
- exec master..xp_cmdshell 'copy E:/H_BACKUP.bak z:'
-
- --删除(这句可以去掉)
- --exec master..xp_cmdshell 'del E:/H_BACKUP.bak'
-
- --完成后删除映射
- exec master..xp_cmdshell 'net use z: /delete'
如果数据文件很大,会比较浪费时间,备份和考拷都会消费不少时间成本。 MSSQL SERVER 2000在WIN2K环境下的实现方法如下:
最重要的是注意权限问题:
如:
SQLServer备到FileServer上
那你的SQLServer的启动用户必须在FileServer上有足够的权限!
--------------------^^^---------------------------------
1、SQLServer上新建一SQLUser用户权限大一点。
2、FileServer上建同一用户对某一文件夹有足够权限。
3、两机的SQLUser密码相同(方便一点)
4、将SQLServer改为SQLUser启动
(管理工具-->服务-->mssql项-->属性-->指定用户及密码)
5、//192.168.*.*/文件夹/ShareBak.Bak就可以了
-----------------------------------------------------------
简单一点就是:
如果你两台都是windows2ks
你的机器也用同样的Administrator密码,且sql服务器用administrator启动
那你写设备时就可以写://ip/.......
如果对方是98那你要完全共享一下!
你写设备时就可以写://ip/.......
写语句 backup database 数据库名 to disk='//计算机名//共享目录名/备份文件名' 即可以
- MSSQL的异地远程存储,SQLServer备到FileServer上
- 环境:win2k+sqlserver 2K SP3
-
-
- backup database msdb to disk=’computer estfilename.bak’ --(注意大小写)
-
-
- 如果SQL异地备份失败,归根结底是权限问题! H
-
- 那么你的SQLServer的启动用户必须在FileServer上有足够的权限!
-
- 1、SQLServer上新建一SQLUser用户权限大一点。
- 2、FileServer上建同一用户对某一文件夹有足够权限,就是在两台机器上建相同的用户名和密码,然后与这个用户名登入电脑。
- 3、两机的SQLUser密码相同(方便一点)
- 4、将SQLServer改为SQLUser启动
- (管理工具-->服务-->mssql项-->属性-->指定用户及密码,是计算机的登入用户名)
- 5、backup database 数据库 to disk=’192.168.*.*文件夹ShareBak.Bak’就可以了。
- 作业:db_backup2pc @databaseName='databaseName',@filepath='filepath'
-
- CREATE PROCEDURE dbo.db_backup2pc
- @databaseName nvarchar(100) = null, --数据库名
- @filepath nvarchar(125) = null --文件保存路径(IP+隐藏共享+)
- AS
- BEGIN
- DECLARE
- @year1 varchar(4),
- @month1 varchar(2),
- @day1 varchar(2),
- @flag varchar(255),
- @proc_result tinyint,
- @sqlstr varchar(2000),
- @createdir varchar(255)
-
- begin
-
- -- Get year & month &day fromat of the day before yesterday
- -- SET @year1 = substring(convert(varchar,datepart(yyyy,getdate()-2)),3,2)
- SET @month1 =substring(convert(varchar,datepart(mm,getdate())),1,2)
- SET @day1=substring(convert(varchar,datepart(dd,getdate())),1,2)
- -- if len(@month1) <2 set @month1 = '0' + @month1
- -- if len(@day1) <2 set @day1 = '0' + @day1
-
- set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1
- EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output
-
- if (@proc_result <>0)
- begin
- set @createdir='md '+@filepath+@databaseName+'_'+@month1+'-'+@day1
- EXEC master..xp_cmdshell @createdir,no_output
-
- set @sqlstr='backup database '+@databaseName+' to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+''+@databaseName+'.bak''' --+' with init'
- Execute (@sqlstr)
-
- set @sqlstr='backup database master to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'master.bak'''
- Execute (@sqlstr)
-
- set @sqlstr='backup database msdb to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'msdb.bak'''
- Execute (@sqlstr)
-
- set @flag='Backup database successful.'
- end
- else
- set @flag='The directory "'+@databaseName+'_'+@month1+'-'+@day1+'" has been in, backup database unsuccessful.'
-
- print @flag
- END
- END
- GO
-
-
-
- 作业:delete_db_backupfile2pc @databaseName='databaseName',@filepath='filepath'
-
- CREATE PROCEDURE dbo.delete_db_backupfile2pc
-
- @databaseName nvarchar(100)=null,
- @filepath nvarchar(125)=null
-
- AS
- DECLARE
- @year1 varchar(4),
- @month1 varchar(2),
- @day1 varchar(2),
- @sqlstr varchar(2000),
- @flag varchar(255),
- @proc_result tinyint
- begin
-
- if @databaseName = null or @filepath = null
- set @flag='Variable Error!'
- else
- begin
-
- --保存7天的数据
- SET @month1 =substring(convert(varchar,datepart(mm,getdate()-7)),1,2)
- SET @day1=substring(convert(varchar,datepart(dd,getdate()-7)),1,2)
-
- -- if len(@month1) <2 set @month1 = '0' + @month1
- -- if len(@day1) <2 set @day1 = '0' + @day1
-
- set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1
- EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output
-
- if (@proc_result=0)
- begin
- set @sqlstr='del '+@filepath+@databaseName+'_'+@month1+'-'+@day1+' /q'
- exec master..xp_cmdshell @sqlstr,no_output --删除目录下的文件
- set @sqlstr='rd '+@filepath+@databaseName+'_'+@month1+'-'+@day1
- exec master..xp_cmdshell @sqlstr,no_output --删除目录
- set @flag='Delete file successful!'
- end
- else
- set @flag='Can not find "'+@filepath+@databaseName+'_'+@month1+'-'+@day1+'" file!'
- end
- print @flag
- end
- GO
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。