内容显示页
 
类别:数据库+SQL | 浏览(123) | 2008-10-19 16:23:43

--作者:chenjing957 
--http://www.windbi.com/showtopic.aspx?forumid=6&topicid=245&go=prev
--使用方法:在重装系统前,运行这个,把生成的SQL语句保存起来
--     重装系统后再运行生成的那个文件,便可实现批量附加数据库

--目前只适合SQL2005,SQL2000的不行,还正在研究。研究出来会放上来2008-12-11
--批量附加数据库备份例子:
--exec attach_db_pro 'c:\program files\microsoft sql server\data'

if object_id('attach_db_pro') is not null
drop procedure attach_db_pro
go


create procedure attach_db_pro
@dir nvarchar(520)
as
declare @dbname varchar(20)
declare @filename nvarchar(520)
declare @name sysname
declare @temp_db_name varchar(20)
declare @i int
declare my_cursor cursor
for 
    select  db_name(dbid) dbname,name,filename from master..sysaltfiles
    open my_cursor
    fetch next from my_cursor into @dbname,@name,@filename
    while  @@fetch_status = 0
    begin
          set @temp_db_name = @dbname
          set @i = 1
          print 'exec sp_attach_db @db_name = ' + @dbname + ',@filename' + convert(varchar,@i) + ' = ''' + @dir + '\' + @name + right(@filename,4)+''''
          fetch next from my_cursor into @dbname,@name,@filename
          while @@fetch_status = 0 and @temp_db_name = @dbname
          begin
                  set @i = @i + 1
                  print ',@filename' + convert(varchar,@i) + ' = ''' + @dir + '\'+@name+right(@filename,4)+''''
                  fetch next from my_cursor into @dbname,@name,@filename
          end
          print ''
    end
close my_cursor
deallocate my_cursor
go

引用本页地址:http://www.yongfa365.com/item/PiLiangFuJiaShuJuKuDeYiZhongFangFa.html
 
 
相关链接
 
网友评论:
1 匿名网友 - 2008-11-21 22:59:17
接照你批量附加数据库的一种方法所生成的语句:exec sp_attach_db @db_name = PUBDATA,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\PUBDATA '
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\PUBDATA_log
运行是提示:服务器: 消息 8145,级别 16,状态 2,过程 sp_attach_db,行 0
@db_name 不是过程 sp_attach_db 的参数。
请问如何解决
 
2 匿名网友 - 2008-11-21 23:47:50
测试了一下这句print 'exec sp_attach_db @db_name = ' + @dbname + ',@filename' + convert(varchar,@i) + ' = ''' + @dir + '\' + @name + right(@filename,4)+''''中的@db_name 应改为@db_name 。还有数据库库文件名要取完整文件名(即包括扩展名)要不然老提示文件名有误。不知怎么改,请指教
 
3 yongfa365 - 2008-11-22 0:04:19
看清怎么用再用
 
4 匿名网友 - 2008-11-22 13:28:30
试了好多次,生成的文件没有取得完整文件名(即包括扩展名)
附加的时候就会提示
服务器: 消息 5105,级别 16,状态 4,行 1
设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\user012008
 
姓名: 记住我
网址:
邮箱:
内容:
验证码:  验证码图片 看不清? 换张图试试
 
     
 
 
文章分类
 
 
专题(3)
 
.Net + C#(41)
 
ASP+VBS(153)
 
 
 
Linux(10)
 
 
 
web 2.0(24)
 
 
 
 
 
心程(59)
 
生活(80)
 
 
     

Power by :柳永法(yongfa365)'Blog | Model by :hibaidu | CSS by:众网友 | 京ICP备07011491号  QQ:64049027  E-mail:64049027qq.com

本空间赞助商:北京中科兴联信息技术有限公司