网页教学网
 当前位置: 网页教学网 >> 网络编程 >> 数据库编程技术 >> 阅读:快速解决引用对象时,必须加owner的问题
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

快速解决引用对象时,必须加owner的问题

http://www.webjx.com  更新日期:2007-07-30 09:15  出处:网页教学网  作者: 收藏本文

问:从别处复制一个数据库DB,附加后,对象的所有者不是Admini,每次查询时必需写select * from Admini.***才能查到。用什么方法不用前面的Admini吗(在不修改所有者的前提下)?

注:(已经在“安全性-登陆”下面也新建了一个Admini用户,默认数据库设置为DB,权限足够,但在查询分析器下用Admini登陆,查询时还是要写Admini前缀,否则就提示对象名无效)

答:如果是用的是sql 2000的话,用某个用户登录, 不指定所有者的话, 访问对象的时候, 默认的所有者就是当前登录用户

如果是2005的话, 在数据的安全性--用户--右键你的用户admin--属性, 看看默认构架是什么, 这个默认架构决定当你访问对象时, 不指定所有者的话, 使用那个所有者(sql 2005中, owner变成构架了)

下面介绍一下会导致与上面的说法不匹配的异常情况:

如果在数据库DB中,Admini是孤立用户的话,则情况会与上面描述的有出入(附加或者恢复数据库很容易出现孤立用户),即引用对象时必须指定所有者。孤立用户的表现是:只能创建Admini登录, 并通过服务器角色给其分配对DB的权限,或者是在DB中建立名称不是Admini的用户与登录关联。

要查询DB中的孤立用户情况,执行下面的语句:

USE DB
GO
EXEC sp_change_users_login 'Report'

解决孤立用户的方法:

解决这种异常只要解决掉孤立用户,在确定了Admini是孤立用户后,可以执行下面的语句来解决:

USE DB
GO
-- 修复孤立用户
EXEC sp_change_users_login 'Auto_Fix', 'Admin', NULL, '密码'; 
    -- 这个密码是指, 如果没有事先建立admin 这个登录的话,
sql自动创建登录时, 为该登录分配的密码
-- 授予在DB 中的相关权限
EXEC sp_addrolemember  'db_owner', 'Admin'

关键词:数据库,sql
推荐给好友】【关闭
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
站内搜索
相关文章
推荐文章