批量附加SQL数据库工具-两款-需.net 4.0支持

标签:
批量附加sql数据库工具4.0支持杂谈 |
分类: 计算机 |
http://s7/middle/4bea164eta5206e796936&6904.0支持" TITLE="批量附加SQL数据库工具-两款-需.net 4.0支持" />
http://s8/middle/4bea164eta5206e823bc7&6904.0支持" TITLE="批量附加SQL数据库工具-两款-需.net4.0支持" />
下载:http://dl.dbank.com/c0qcdr56nb
http://s8/middle/4bea164eta5206e823bc7&6904.0支持" TITLE="批量附加SQL数据库工具-两款-需.net
下载:http://dl.dbank.com/c0jevcjlfx
============================================
批量附加数据库
问题提出:
数据库迁移,采用公司老办法:数据库分离,复制到新服务器上,然后附加到新的数据库上。
遇到的问题是:需要附加的数据库有800多个。在sql2005里找不到批量附加的存储过程或者命令,一个一个附加也太麻烦了。
解决办法:
1、在原数据库下用下面的asp页面生成批量脚本
2、用ie访问并将生成的html文件内容复制到文本文档下
3、替换掉旧的 mdf 、nlf和ldf文件路径,然后加载新的路径字符串
4、在新数据库中运行脚本
asp代码部分:
<html>
<head></head>
<body>
<%
set objConn = server.CreateObject("ADODB.Connection")
sql = " P rovider=SQLOLEDB;data source=(local);initial
catalog=master;user id=sa;password=Founder123;"
objConn.open sql
sqlstr="select db_name(dbid) name,filename from sysaltfiles"
Set objrs = server.CreateObject("adodb.recordset")
objrs.open sqlstr,objConn,3,3
Dim db_name,i
while not objrs.eof
db_name = objrs("name")
i = 1
response.write("<br><br>
EXEC sp_attach_db @dbname =
'"&objrs("name")&"'<br>")
response.write(",@filename"&i&" =
'"&objrs("filename")&"'
<br> ")
objrs.movenext
while Not objrs.eof And objrs("name") = db_name
i = i + 1
response.write(",@filename"&i&" =
'"&objrs("filename")&"'<br>")
objrs.movenext
Wend
Wend
objrs.close
objConn.close
%>
</body>
</html>
生成的结果是:
EXEC sp_attach_db @dbname = 'master'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\master.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\mastlog.ldf'
EXEC sp_attach_db @dbname = 'tempdb'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\tempdb.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\templog.ldf'
EXEC sp_attach_db @dbname = 'model'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\model.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\modellog.ldf'
EXEC sp_attach_db @dbname = 'msdb'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MSDBData.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MSDBLog.ldf'
EXEC sp_attach_db @dbname = 'test_db'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test_db_Data.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test_db_Log.ldf'
,@filename3 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_data2.ndf'
,@filename4 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_data3.ndf'
,@filename5 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_log2.ldf'
……
……(省略无数条)
然后替换其路径即可。。
第一次用自己学到的东西解决实际问题,大家支持一下哈:),因为我昨天在网上找了老半天也没找到一个比较完整的解决方案,所以我今天用一个完整的代码给大家,希望能帮得上忙,这个方法适合数据库服务器中的所有数据库mdf和ldf文件都在data目录下,如果不是的话,那就要根据情况寻找解决方案了。
===================================传说中的分界线========================================
itpub上有个朋友提到,为什么非要用asp,直接写个sql脚本不就OK了么??后来想想也对,于是今天写了个脚本给大家:
declare @dbname varchar(20)
declare @filename nvarchar(520)
declare @temp_db_name varchar(20)
declare @i int
declare my_cursor cursor
for
select db_name(dbid) name,filename from
master..sysaltfiles
open my_cursor
fetch next from my_cursor into @dbname,@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) +' = ‘’' + @
filename+‘’‘’
fetch next from my_cursor into @dbname,@filename
while @@fetch_status = 0 and @temp_db_name = @dbname
begin
set @i = @i + 1
print ',@filename' + convert(varchar,@i) +
' = ‘’'+ @filename+‘’‘’
fetch next from my_cursor into @dbname,@filename
end
批量附加数据库
问题提出:
遇到的问题是:需要附加的数据库有800多个。在sql2005里找不到批量附加的存储过程或者命令,一个一个附加也太麻烦了。
解决办法:
asp代码部分:
<html>
<head></head>
<body>
<%
%>
</body>
</html>
生成的结果是:
EXEC sp_attach_db @dbname = 'master'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\master.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\mastlog.ldf'
EXEC sp_attach_db @dbname = 'tempdb'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\tempdb.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\templog.ldf'
EXEC sp_attach_db @dbname = 'model'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\model.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\modellog.ldf'
EXEC sp_attach_db @dbname = 'msdb'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MSDBData.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\MSDBLog.ldf'
EXEC sp_attach_db @dbname = 'test_db'
,@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test_db_Data.mdf'
,@filename2 = 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\test_db_Log.ldf'
,@filename3 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_data2.ndf'
,@filename4 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_data3.ndf'
,@filename5 = 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\DATA\test_db_log2.ldf'
……
……(省略无数条)
然后替换其路径即可。。
第一次用自己学到的东西解决实际问题,大家支持一下哈:),因为我昨天在网上找了老半天也没找到一个比较完整的解决方案,所以我今天用一个完整的代码给大家,希望能帮得上忙,这个方法适合数据库服务器中的所有数据库mdf和ldf文件都在data目录下,如果不是的话,那就要根据情况寻找解决方案了。
===================================传说中的分界线========================================
itpub上有个朋友提到,为什么非要用asp,直接写个sql脚本不就OK了么??后来想想也对,于是今天写了个脚本给大家:
declare @dbname varchar(20)
declare @filename nvarchar(520)
declare @temp_db_name varchar(20)
declare @i int
declare my_cursor cursor
for
select
open my_cursor
fetch next from my_cursor into @dbname,@filename
while
begin
set @temp_db_name = @dbname
set @i = 1
print 'exec sp_attach_db @ db_name = ‘ + @ dbname +' ,@ filename'+ convert(varchar,@ i) +'
fetch next from my_cursor into @dbname,@filename
while @@fetch_status = 0 and @temp_db_name = @dbname
begin
set @i = @i + 1
fetch next from my_cursor into @dbname,@filename
end