VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 924|回复: 9

SQL Server备份恢复的问题

[复制链接]

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-3 22:30:01 | 显示全部楼层 |阅读模式
请教个问题

我在SQL Server下备份了一个数据库,然后到另外一个机器相同的版本恢复了这个数据库,用户是user1,现在在使用SQL语句时,总是出现如下错误:

Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'XXX'

即select * from XXX总是会出错,而换成
select * from user1.XXX则没事。

从网上查询到一些资料,可能是孤儿账户的问题,我用
EXEC sp_change_users_login 'Report'
EXEC SP_CHANGE_USERS_LOGIN UPDATE_ONE, 'user1', 'user1'解决掉了孤儿账户,但依然同样报错。

请问大家是怎么在另外一个SQL Server机器上作恢复的?
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-5-17 01:00:01 | 显示全部楼层
xxx不为当前用户所拥有,可以设置权限允许访问
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-17 17:30:01 | 显示全部楼层
问题是表很多,几百张,有没有一个批量设置的SQL呢?
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-17 20:30:01 | 显示全部楼层
sorry,这个权限是已经设置过的。还有其他的注意点吗?
回复

使用道具 举报

0

主题

6

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-5-20 10:45:01 | 显示全部楼层
备份恢复的时候我都用的是sa的
有权限的话更改表的目前已恢复的表所有者为对应的username
表多就用游标了
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-22 14:45:01 | 显示全部楼层
我描述一下我的操作过程:
我在原数据库下用user1备份的,然后到另一个机器的sql server下创建了一个用户user1,并用user1登录,恢复了数据库。

这样被恢复的数据库owner就是user1。然后以
EXEC sp_change_users_login 'Report'
EXEC SP_CHANGE_USERS_LOGIN UPDATE_ONE, 'user1', 'user1'解决掉孤儿账户问题。

同时检查各个表的permission中都有user1,照说user1应该能访问这些表了。可是SQL一定要变成select * from user1.xxx才能使用。太纳闷了。
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-27 03:00:01 | 显示全部楼层
sorry,纠正一下,前面说得user1其实是login,而不是user。我现在发现database下的这个user没有login name。不知道是不是这个原因?那该怎么把这个user1关联到相同的login下呢?
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-27 10:15:02 | 显示全部楼层
sorry,纠正一下,前面说得user1其实是login,而不是user。我现在发现database下的这个user没有login name。不知道是不是这个原因?那该怎么把这个user1关联到相同的login下呢?

我用EXEC SP_CHANGE_USERS_LOGIN UPDATE_ONE, 'user1', 'user1'只是把login的database access 属性中跟user关联了,但反方向的不知道怎么更改?
回复

使用道具 举报

0

主题

114

帖子

69.00

积分

新手上路

Rank: 1

积分
69.00
发表于 2020-6-6 14:15:01 | 显示全部楼层
sp_changobjectowner来修改数据表的所有者,把它修改成DBO的所有就可以了
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-6-22 15:15:01 | 显示全部楼层
--向 'user1' 授予数据库访问权
--将'user1' 添加到角色 'db_owner' 中

USE DBNAME
IF USER_ID('user1') IS NULL
BEGIN
        EXEC sp_grantdbaccess 'user1', 'user1'
        EXEC sp_addrolemember 'db_owner', 'user1'
END
GO
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表