笔记55-徐 SQLSERVER数据库迁移步骤
笔记55-徐 SQLSERVER数据库迁移步骤
1 --SQLSERVER数据库迁移步骤: 2 --1、SELECT @@VERSION返回的号码必须完全一样 1、sql2005 2、企业版 3、操作系统 win7SP1 sql补丁包不用一样 3 --2、在备用服务器的命令行窗口,用指令以单用户模式启动SQL服务 4 --net start MSSQLSERVER /m 5 6 --命令成功执行应该返回如下信息: 7 --the sqlserver (dr) service is starting... 8 --the sqlserver (dr) service was started successfully 9 10 --3、在命令行窗口用sqlcmd连接sqlserver 11 --sqlcmd /E /S sql2005pc sql2005pc:计算机名 /E 可信连接 /S 服务器 12 --如果成功连接应该返回以下信息 13 --1> 14 15 --4、首先恢复master数据库 16 --(1)在sqlcmd的那个连接里,运行下面的恢复语句(假设备份文件为C:\lab\master.bak) 17 RESTORE DATABASE master FROM DISK='C:\lab\master.bak' 18 GO 19 --返回类似下面信息 20 --the master database has been successfully restored.shutting down sql server 21 --sqlserver is terminating this process 22 --sql服务自动停止 23 24 --(2)由于恢复的master数据库里记载的其他数据库的路径和现在的路径不一致,这时候重新启动sqlserver会失败。 25 --必须要用跟踪标志3608来启动 26 --net start MSSQLSERVER /f /m /T3608 27 28 --如果正常,应该返回以下信息 29 --the sqlserver (dr) service is starting... 30 --the sqlserver (dr) service was started successfully 31 32 --(3)用sqlcmd连接修改其他数据库的文件路径到现有的正确路径(C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\) 33 --假定现在的数据文件的路径在C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\ 34 35 --在命令行窗口,用sqlcmd再次连接 36 --sqlcmd /E /S sql2005pc 37 38 --用下面语句修改各个系统数据库的文件路径 39 40 ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=DATA, 41 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.mdf') 42 GO 43 44 --如果正常,应该返回 45 --the file "data" has been modified in the system catalog.the new path will be used the next time the database 46 --is started 47 48 ALTER DATABASE mssqlsystemresource MODIFY FILE(NAME=LOG, 49 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\mssqlsystemresource.ldf') 50 GO 51 52 --如果正常,应该返回 53 --the file "log" has been modified in the system catalog.the new path will be used the next time the database 54 --is started 55 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBData, 56 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf') 57 GO 58 59 --返回信息同上 60 ALTER DATABASE msdb MODIFY FILE(NAME=MSDBLog, 61 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf') 62 GO 63 64 --返回信息同上 65 66 ALTER DATABASE msdb MODIFY FILE(NAME=modeldev, 67 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf') 68 GO 69 70 --返回信息同上 71 72 ALTER DATABASE msdb MODIFY FILE(NAME=modellog, 73 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf') 74 GO 75 76 --返回信息同上 77 78 ALTER DATABASE msdb MODIFY FILE(NAME=tempdev, 79 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\tempdb.mdf') 80 GO 81 82 --返回信息同上 83 84 ALTER DATABASE msdb MODIFY FILE(NAME=templog, 85 FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\templog.ldf') 86 GO 87 88 --返回信息同上 89 90 --全部修改完毕后,运行exit 命令退出sqlcmd连接 91 92 --(4)关闭sqlserver 93 --net stop MSSQLSERVER 94 95 --如果正常,返回以下信息 96 --the sqlserver (dr) service is stopping 97 --the sqlserver (dr) service was stopped successfully 98 99 --(5)用正常模式启动SQLSERVER 100 --net start MSSQLSERVER 101 102 --这时,sqlserver可以正常启动。但是它使用的系统数据库除了master以外,都是原先备用服务器自己的 103 --我们要用生产服务器上的备份来替换它们 104 105 --5、恢复msdb数据库 106 --在运行下面命令之前要先关闭SQL AGENT服务,然后用restore命令恢复msdb数据库,将其指向新的文件路径 107 RESTORE DATABASE msdb FROM DISK='C:\lab\msdb.bak' WITH 108 MOVE 'MSDBData' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdbdata.mdf', 109 MOVE 'MSDBLog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\msdblog.ldf',REPLACE 110 GO 111 112 --6、恢复model数据库 113 RESTORE DATABASE model FROM DISK='C:\lab\model.bak' WITH 114 MOVE 'modeldev' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\model.mdf', 115 MOVE 'modellog' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.4\MSSQL\Data\modellog.ldf',REPLACE 116 GO 117 118 --7、修改服务器名称 119 --(1)运行下面的语句你会发现,返回的还是原先的服务器名字。这是因为master数据库是从那台机器来的 120 SELECT @@SERVERNAME 121 --(2)运行下面语句修改服务器名 122 EXEC sys.sp_dropserver @server = '原服务器名' -- sysname 123 -- @droplogins = '' -- char(10) 5个中文 10个英文 10个数字 124 EXEC sys.sp_addserver @server = 'SQL2005PC', -- sysname 125 @local = 'local'-- varchar(10) 126 127 128 --http://www.yesky.com/imagesnew/software/tsql/ts_sp_addp_1ooi.htm 129 --@local:指定要添加的服务器是本地服务器还是远程服务器。@local 的数据类型为 varchar(10),默认值为 NULL。指定 @local 为 LOCAL 将定义 @server 为本地服务器的名称并使 @@SERVERNAME 函数返回 server。 130 --(在安装过程中,安装程序将该变量设置为计算机名。建议不要更改该名称。默认情况下,用户可通过计算机名连接到 SQL Server 而无需额外的配置。) 131 --只有将服务器关闭然后重新启动后,本地的定义才会生效。每个服务器中只能定义一个本地服务器。 132 133 --@duplicate_ok:指定是否允许重复的服务器名。@duplicate_OK 的数据类型为 varchar(13),默认值为 NULL。@duplicate_OK 只能有 duplicate_OK 或 NULL 这两个值。如果指定了 duplicate_OK, 134 --则即使要添加的服务名已经存在,也不会发生错误。如果没有使用命名参数,则必须指定 @local 135 136 137 --(3)重启sql服务,再运行下面语句,就可以看到返回现在的服务器名字了 138 SELECT @@SERVERNAME 139 GO 140 141 --做完这些操作后,原先SQLSERVER的所有配置都能够恢复到新的服务器上。只是用户数据库都是可疑 142 --状态,因为服务器上没有它们的文件。接下来可以使用前文介绍的恢复方法,将用户数据库依次恢复