此次公司要把MS SQL Server 2000
办事器上的数据库复制到新的办事器上面往,于是几百个数据库文件便交给我附减到新办事器上了

夙昔一直没接触过这圆面的器械,于是果断谷歌了也百度了
找了很多举措也下载了很多的器械,有些确实能用,但我便逢到了很多成就以下:
1.我的办事器是win 2008 server 64位
而好多是在XP下运转的
2.我的办事器上安拆的数据库是2000
不是如古多用的2005或以上 很多是要在2005下的批量附减
3.有一个能日常运转,但就是附减不了.....怂爆了
念过用器械 也念过用php或java或c写一个小器械
但最后借是认为搞个SQL语句的便利
于是我翻找了很多人的代码后得出上面的代码
运转情况:
办事器系统:win2008s
数据库版本:mssql 2000 s3
代码:
create table tempFile(
Name nvarchar(255) Not Null,depth int
Null, IsFile bit Null
)
create table
smoPrimaryFileProp(
property sql_variant Null, value
sql_variant Null
)
create table
smoPrimayChildren(
status int,fileid int,name
sysname,filename nvarchar(512)
)
GO
--以上三个表为暂时表
完成后可以删除
假如在2005以上的版本可使用暂时变量表
Insert Into tempFile Exec
master.dbo.xp_dirtree "D:Program Files (x86)Microsoft SQL
ServerMSSQLLibraryData",1,1
--以上便为十足要附减的数据库文件地点文件夹
Declare @Path
varchar(2000),
@File nvarchar(255),
@sql nvarchar(4000),
@DataBase sysname
set @Path = "D:Program Files
(x86)Microsoft SQL ServerMSSQLLibraryData"
--
@Path变量即为十足要附减的数据库文件地点的文件夹
Declare cur_File Cursor
For
Select
Name From tempFile As
a Where
IsFile=1 And Name
Like "%.mdf"
Open cur_File
Fetch Next From cur_File Into
@File
While @@Fetch_Status=0
Begin
Set @sql = "dbcc checkprimaryfile (N"""+
@Path+ @File + """ , 2) With No_Infomsgs"
Insert Into smoPrimaryFileProp Exec
(@sql)
Set @sql="dbcc checkprimaryfile (N"""
+@Path+ @File + """ , 3) With No_Infomsgs"
Insert Into smoPrimayChildren Exec
(@sql)
Select
@DataBase=Quotename(Convert(nvarchar(255),value)),
@sql=null
From smoPrimaryFileProp Where
Convert(nvarchar(255),property)="Database name"
Select
@sql=Isnull(@sql+","+Char(13)+Char(10), "Create DataBase
"+@DataBase+" On"+Char(13)+Char(10))+"(FileName=N"""+@Path+Right(Rtrim(filename),Charindex("",Reverse(Rtrim(filename)))-1)+""")"
From smoPrimayChildren
Exec(@sql+" For Attach")
Print N"告成附减exd赹
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23283785/viewspace-1117810/
,如需转载,请注明出处,否则将追究法律责任。