如何迁移数据库到另一个分区
2008-04-08 23:51
267 查看
问题描述:一台服务器,联了好几个阵列,其实可以看作不同的逻辑驱动器,就假设为c盘,d盘,e盘sql server 2000 程序装在了c盘,数据装在了d盘现在阵列d需要撤走,我需要把原来d盘的数据库文件挪到e盘上,数据库有100多个,一个一个手动备份恢复时间不够,而且我不知道数据库文件的路径变了以后会有什么问题(我做了试验,服务起不起来了)。我应该如何做?我试了一种办法,就是把d盘的所有数据库的数据文件和文件夹原封不动的拷贝到e盘,然后把d盘撤走,把e盘的盘符改为d,就可以了,但是总觉得属于歪招,所以想知道正规做法是怎么做的? 解决方法:最省事的方法还是所谓的改盘符歪招. 这种方法也最节约时间.正常的方法就是备份/还原(不推荐, 太慢)或者是1楼的分离/附加, 如果只是变盘符, 可以写自动化脚本最歪的方法是改系统表, 直接把系统表中记录的数据文件和日志文件目录改正确.(SQL Server 2005已经无法修改系统表, 所以定义这种方法是最歪的) 改系统表方法的具体实现脚本:-- 自动迁离的脚本(自动实现分离+复制文件+附加)-- 注意根据需要修改下面的--** 注释的部分.-- 邹建2006.07 (引用请保留此信息) -- 备份数目录信息和分离数据库IF OBJECT_ID('tempdb..#') IS NOT NULL DROP TABLE #CREATE TABLE #( DbName sysname, Name sysname, FileName nvarchar(260), FilePath as LEFT(FileName, LEN(FileName) - CHARINDEX('/', REVERSE(FileName))))EXEC sp_msforeachdb N'--** 如果是所有的用户数据库都要处理, 则去掉下面两句的注释, 并且注释掉后面的两行--IF N''?'' IN(N''master'', N''model'', N''msdb'', N''tempdb'')--RETURN -- 只能处理用户数据库 --** 如果是处理指定的用户数据库, 则保持现状IF N''?'' NOT IN(N''HelloWorldDB'', N''AdventureWorks'') RETURN -- 只处理指定列表的数据库USE [?]INSERT #(DbName, Name, FileName)SELECT DB_NAME(), name, RTRIM(filename) FROM sysfiles USE masterEXEC sp_detach_db N''?''' -- 复制数据库文件DECLARE @s nvarchar(4000), @D_Drive char(1)SET @D_Drive = 'D' --** 迁移到E 盘 DECLARE tb CURSOR LOCALFORSELECT N'xcopy "' + FileName + '" "' + STUFF(FilePath, 1, 1, @D_Drive) + '/" /y'FROM #OPEN tbFETCH tb INTO @sWHILE @@FETCH_STATUS = 0BEGIN PRINT(@s) EXEC master.dbo.xp_cmdshell @s FETCH tb INTO @sENDCLOSE tbDEALLOCATE tb -- 附加数据库DECLARE @dbname sysnameDECLARE tb CURSOR LOCALFORSELECT DISTINCT DbNameFROM #OPEN tbFETCH tb INTO @dbnameWHILE @@FETCH_STATUS = 0BEGIN SET @s = N'EXEC sp_attach_db ' + QUOTENAME(@dbname, N'''') SELECT @s = @s + N',''' + STUFF(FileName, 1, 1, @D_Drive) + N'''' FROM # WHERE DbName = @dbname EXEC sp_executesql @s FETCH tb INTO @dbnameENDCLOSE tbDEALLOCATE tb
相关文章推荐
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 转:邹建--如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- 如何迁移数据库到另一个分区
- sql server 如何在一个数据库中操作另一个数据库中的数据
- 如何用一个数据库的数据去更新另一个数据库的内容
- Linux如何迁移/home分区
- 如何把SharePoint的数据库文件从C盘迁移到其他盘
- Zabbix历史数据库迁移 及分区
- 如何做reporting services数据库的迁移
- 如何将一个数据库的表复制到另一个数据库
- sql server如何将高版本的数据迁移到低版本中。解决数据库 'XX' 的版本为 655,无法打开。此服务器支持 611 版及...