SQL用户恢复

[转]这一文章的主题是如何把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


 

posted @ 2011-03-17 13:36  polymorphic  阅读(242)  评论(0编辑  收藏  举报