日期:2014-05-19  浏览次数:20629 次

“所有者”问题
别人在一台数据库服务器上创建个库
我把这个数据库备份还原到我服务器上后还原为a库,所有者显示为“abc”,而不是我们常见的“dbo”
现在如果我用sa登陆这个数据库,那么就得
select   *   from   abc.Ta
很是不便,对其他访问也带来麻烦
我在安全性下登录增加个“abc”帐号,在进行指定此登录可以访问的数据库时,我尝试许可abc帐号能登陆a库,可是提示
错误   15023:当前数据库中已存在用户或角色“abc”
可是我到a库下看用户,却没有该用户,怎么办呢?

------解决方案--------------------
添加数据的所有db_owner--
------解决方案--------------------
在本机器备份,再还原.或分离后再附加.用SA
------解决方案--------------------
--新增用户
exec sp_addlogin 'test ' --添加登录
exec sp_grantdbaccess N 'test ' --使其成为当前数据库的合法用户
exec sp_addrolemember N 'db_owner ', N 'test ' --授予对自己数据库的所有权限
go

--删除测试用户
exec sp_revokedbaccess N 'test ' --移除对数据库的访问权限
exec sp_droplogin N 'test ' --删除登录

------解决方案--------------------
--执行下面语句就行了,执行中会出现错误提示,不用采它.
exec sp_msforeachtable "sp_changeobjectowner '? ', 'dbo ' "
------解决方案--------------------
你可以將所有的abc全部改為dbo。
------解决方案--------------------
如果你的abc已经建好了。尝试一下以下语句

1,
use master
select sid from sysusers where name= 'abc '
2,
use a
update sysusers
set sid=你第一步查出来的sid值
where name= 'abc '

能够执行上述查询的前提是你右键点击服务器,选择 "属性 "打开属性配置页,选中 "服务器设置 "分页,会看到三个复选框,你选中第一个选项确定;
记住,做完操作以后此项设置最好改回到未被选中状态
------解决方案--------------------
exec sp_msforeachtable 'sp_changeobjectowner ' '? ' ', ' 'dbo ' ' '

使用這個語句將所有者都改為dbo