关于多数据库的备份

jerryfly 2007-03-12 11:06:50
大虾们,请问一下:
有一台数据服务器,里边有100来个大小只有40M左右的MDF数据库文件,而且都是单独的,并每天随时更新数据,,,问: 有什么好的方案或者方法可以更好的备份。 望赐教,谢谢!
...全文
492 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxd001_810 2007-03-17
  • 打赏
  • 举报
回复
你可以建一个JOB,而这个JOB包含多个步骤,再执行
wangdehao 2007-03-13
  • 打赏
  • 举报
回复
可以


---磁盘映射

exec master..xp_cmdshell 'net use z: \\xz\c$ "密码" /user:xz\administrator'

/*--说明:
z:是映射网络路径对应本机的盘符,与下面的备份对应
\\xz\c$是要映射的网络路径
xz\administratorxz是远程的计算机名,administrator是登陆的用户名
密码 上面指定的administrator用户的密码
--*/



--2.进行数据库备份
declare @dbname varchar(256)
declare @sql varchar(8000)
declare cur cursor local for
select name from master..sysdatabases where dbid>4
open cur
fetch next from cur into @dbname
while @@fetch_status=0
begin
set @sql='backup database '+@dbname
+' to disk=''z:\'+@dbname
+'.bak'''
exec(@sql)
fetch next from cur into @dbname
end
close cur
deallocate cur

--3.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'

jerryfly 2007-03-13
  • 打赏
  • 举报
回复
对了,,备份路径能否用网络路径的?
jerryfly 2007-03-13
  • 打赏
  • 举报
回复
呵,,,好的,,,谢谢,,,我再试试,,,
初学者,见笑了,,,
wangdehao 2007-03-13
  • 打赏
  • 举报
回复

我在这台电脑上测试,有3个数据库,3个附加的数据库名分别为:music,pos和uds ,,其中music比较大有1G多,,其如两个只有20M左右,,刚作业运行的时候,只把pos和uds及另一个系统默认自带的distribution给备份了下来。
但我按大哥你上面给的设置,“步骤”那一项,,我只选了POS数据库,,
----晕,那个设置是指sql语句是运行在哪个数据库上,以上几种sql语句的写法都是备份所有数据库的,-->"数据库"选择执行命令的数据库,直接选master就行
wangdehao 2007-03-13
  • 打赏
  • 举报
回复
启动SQL Agent服务,写个作业就可以了
gc_ding 2007-03-13
  • 打赏
  • 举报
回复
sorry,应该这样,先写成存储过程,再
-->"命令"中输入要执行的语句: EXEC bak_db

create proc bak_db
as
declare @SqlStr varchar(8000)
select @SqlStr=''
select @SqlStr=@SqlStr+'backup database '+name+' to disk=''D:\'+name+'.bak'''+CHAR(10)
from master..sysdatabases where dbid>=7
exec(@SqlStr)
go
jerryfly 2007-03-13
  • 打赏
  • 举报
回复
----gc_ding(施主,给个妞泡好么) ---
谢谢,,,
我在这台电脑上测试,有3个数据库,3个附加的数据库名分别为:music,pos和uds ,,其中music比较大有1G多,,其如两个只有20M左右,,刚作业运行的时候,只把pos和uds及另一个系统默认自带的distribution给备份了下来。
但我按大哥你上面给的设置,“步骤”那一项,,我只选了POS数据库,,
gc_ding 2007-03-13
  • 打赏
  • 举报
回复
因为我这里有上百个的单独数据库,,如果按照大哥你的方法,我可能要设上百个作业,而且每个作业的备份地址我都要修改一下保存的位置。
------------------------------------------------------------------------------------
设上百个作业?一个作业就可以了,把以上语句放进去,一次就把全部用户数据库备份了
gc_ding 2007-03-13
  • 打赏
  • 举报
回复
To:wangdehao(找找找(现在很幸福))
算了一下,备份每个数据库平均需要的语句长度大概为60,对于楼主100来个数据库来说,如果不超过130个数据库应该可以实现(具体还要看数据库名称的长度)
jerryfly 2007-03-13
  • 打赏
  • 举报
回复
to:gc_ding(施主,给个妞泡好么)
to:wangdehao(找找找(现在很幸福))
先谢谢两位,,,,
是的,,我用--gc_ding(施主,给个妞泡好么) --的方法备份测试了,单个备份成功!!
因为我这里有上百个的单独数据库,,如果按照大哥你的方法,我可能要设上百个作业,而且每个作业的备份地址我都要修改一下保存的位置。
-- wangdehao(找找找(现在很幸福))---大哥有什么好的方法没有? 谢谢各位,,,,
leo_lesley 2007-03-13
  • 打赏
  • 举报
回复
用作业可以完成,但是执行作业的时候一定要保证SQL Agent服务事启动的,否则,作业不能自动执行。
wangdehao 2007-03-13
  • 打赏
  • 举报
回复
To:gc_ding(施主,给个妞泡好么)
对于数量很多的数据库来说,varchar(8000)并不能确保足够的长

gc_ding 2007-03-13
  • 打赏
  • 举报
回复
--通过向导创建作业的基本步骤

(1)企业管理器-->管理-->SQL Server代理-->作业
(2)右键作业-->新建作业
(3)"常规"标签
-->"名称"中输入作业名称
-->如果不希望作业在创建后立即运行,则清除"启用"复选框
例如,如果要在按计划运行之前测试某个作业,则禁用该作业。
-->如果作业仅在此服务器上运行,单击"以本地服务器为目标"选项
-->如果服务器是主服务器,作业在其它服务器上运行,单击"以多个服务器为目标"选项
-->"描述"框中输入对作业功能的描述,最大字符数为 512
(4)"步骤"标签-->新建
-->"步骤名"中输入步骤名
-->"类型"中选择"Transact-SQL 脚本(TSQL)"
-->"数据库"选择执行命令的数据库
-->"命令"中输入要执行的语句: 以上备份语句-->确定
(5)"调度"标签-->新建调度
-->"名称"中输入调度名称
-->"调度类型"中选择你的作业的执行方式
(如果选择"反复出现",那么可以点"更改"来设置你重复执行作业的方式)

(6)启动SQL Agent服务,并设置为自动启动,否则你的作业不会被执行
--打开SQL SERVER服务管理器-->点"开始/继续"-->将当启动OS时自动启动服务
--或我的电脑-->控制面板-->管理工具-->服务-->右键SQLSERVERAGENT-->属性-->启动类型-->选择"自动启动"-->确定.
jerryfly 2007-03-13
  • 打赏
  • 举报
回复
谢谢楼上兄弟们,,,,
再顶上去看看,,还有没其他,,,
jerryfly 2007-03-13
  • 打赏
  • 举报
回复
谢谢大家这么涌跃支持支持,,,

其实如果是单个数据库的,用“发布”和“订阅”也可以达到很好的备份效果。
greengrince 2007-03-13
  • 打赏
  • 举报
回复
学习
Derek_cap 2007-03-13
  • 打赏
  • 举报
回复
我现在的备份方法是,管理--数据库维护计划--(建几个备份计划),
ycqing 2007-03-13
  • 打赏
  • 举报
回复
mark
wangdehao 2007-03-12
  • 打赏
  • 举报
回复
declare @dbname varchar(256)
declare @sql varchar(8000)
declare cur cursor local for
select name from master..sysdatabases where dbid>4
open cur
fetch next from cur into @dbname
while @@fetch_status=0
begin
set @sql='backup database '+@dbname
+' to disk=''D:\'+@dbname
+'.bak''
exec(@sql)
fetch next from cur into @dbname
end
close cur
deallocate cur
加载更多回复(6)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧