SQL用户恢复
时间:2011-03-17 来源:acafaxy
[转]这一文章的主题是如何把sql 2000 上的数据库迁移到 sql 2005上面来。
一、准备工作:备份 sql 2000上的数据库,形成 bak 文件。在 目标机器的 sql 2005 上新建立同名空数据库,选择还原操作。这时,应该会出现
错误:SQl Server2005 目录失败,出现操作系统错误...
二、原因分析:在还原数据库的时候, bak文件存储了原始数据库的存储路径,这个路径在新数据库所在机器上不存在,所以这里要使用sql语句进
行还原,还原的时候需要更改一下 mdf、ldf文件的位置。
1、 SQL 2005 新建同名数据库,保存在:
C:\Program Files\Microsoft SQL Server\MSSQL\data\
2、在查询分析器执行以下语句:
RESTORE DATABASE AcafaDb FROM DISK = 'C:\AcafaDb.bak' with replace,
MOVE 'AcafaDb_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\AcafaDb_Data.MDF',
MOVE 'AcafaDb_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\AcafaDb_Log.LDF'
注意:
1)、C:\AcafaDb.bak 是数据库备份文件的路径
2)、C:\Program Files\Microsoft SQL Server\MSSQL\Data\AcafaDb_Data.MDF 是保存数据库文件的路径
3)、C:\Program Files\Microsoft SQL Server\MSSQL\Data\AcafaDb_Log.LDF 是保存数据库日志文件的路径
3、成功还原后,数据库原来的登录用户,变成了孤立用户。
所谓孤立用户,就是某个数据库帳戶只有用户名,而没有登录名,这样用户在用户表 sysusers 中存在,而在 master 数据库的syslogins 中没有对
应的记录。
孤立用户的产生一般是以下两种原因形成的:
1).将备份的数据库在其他机器上还原;
2).重装系统或SQL SERVER 只还原了用户库
解决办法是使用系统自带的存储过程 sp_change_users_login 来修复:
USE AcafaDb;
GO
EXEC sp_change_users_login 'Auto_Fix', 'acafacom', NULL, 'password';
GO
意思是:修复用户名acafacom,密码为password