SQL2005恢复数据库(GS)
在SQL2005下面恢复数据分为两种情况。一种是新建的实例编号与恢复的数据库编号相同情况;一种是新建的实例编号与恢复的数据库编号不同情况。
一、新建的实例编号与恢复的数据库编号相同情况,我们以实例编号为001为例;
1、 新建实例编号为001后。进行SQL2005企业管理器。选中数据库----任务—还原---数据库,如图:
2、 选择源设备---选好以前备份的数据库文件—确定。如图:
3、 点上文件前面的勾后再选择左上角“选项”,如图:、
4、 勾上“覆盖现有数据库”,选择好自己的文件路径,确定:如图:
5、 还原后选定数据库----新建查询----执行以下语句:
sp_change_users_login 'update_one','lc0019999','lc0019999'
这样就可以用以前数据库的用户名和密码登录。
二、新建的实例编号与恢复的数据库编号不相同情况,我们以实例编号为002为例;
1、新建完编号为002的实例后,还原数据库。步骤和前面还原数据库一样。
2、然后选择实例002的数据库。新建查询---分别执行如下语句:
exec sp_adduser 'lc0029999','lc0029999'
exec sp_addrolemember 'db_owner','lc0029999'
exec sp_addsrvrolemember 'lc0029999','processadmin'
3、然后再执行如下语句:
CREATE PROCEDURE DBGhost_Change_user_schema
@OldSchema as NVARCHAR(128),
@NewSchema as NVARCHAR(128) AS
DECLARE @Name as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)
DECLARE curObject CURSOR FOR
select 'Name' = sysobjects.name
from sysobjects,sys.schemas
where sys.schemas.name = @OldSchema
and sysobjects.uid=sys.schemas.schema_id
and sysobjects.xtype != 'D'
order by name
OPEN curObject
FETCH NEXT FROM curObject INTO @Name
WHILE(@@FETCH_STATUS=0)
BEGIN
set @OwnerName = @OldSchema + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewSchema
FETCH NEXT FROM curObject INTO @Name
END
close curObject
deallocate curObject
4、执行完后,再执行下面语句:
exec DBGhost_Change_user_schema 'lc0019999','lc0029999'
(备注:lc0019999 为以前数据库里的用户,lc0029999为新建实例的用户)
6、 然后再执行以下语句:
exec sp_dropuser 'lc0019999' (备注:lc0019999为以前数据库里的用户)可以不执行
7、 然后再执行如下语句就可以用以前的用户名和密码登录。
sp_change_users_login 'update_one','lc0029999','lc0029999'