Sql Server2005中的这个架构是个什么东西?

mademelaugh 2007-06-24 09:42:17
我有个数据库A,三个用户A_Owner,A_User1,A_User2。其中A_Owner的数据库角色是db_owner,A_User1和A_User2的数据库角色为db_datareader,db_datawriter。由于表和存储过程都是属于架构A_Owner。A_User1和A_User2居然不能执行存储过程。实在是晕。
刚从2000转过来,对架构不大清楚。联机丛书上看来看去也是一头雾水。请高手指点。谢谢
...全文
590 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidNoWay 2007-06-25
  • 打赏
  • 举报
回复
顶!!
mademelaugh 2007-06-25
  • 打赏
  • 举报
回复
我想问的是
1,db_datareader,db_datawriter角色是不是不包含执行存储过程的权限,如果要执行存储过程,是不是只能单独设置权限或自定义角色?
2,To being21(民谣),因为我是从2000的数据库备份直接在2005里还原的。因此数据库用户A,B都拥有自己的架构。我一开始的设计是,A角色-db_owner,用a登录可以做任何事,B登录则只可以select,insert,update,delete并执行“A.sp..”这些存储过程。请问数据库中有固定角色可以直接拿来用吗?
mademelaugh 2007-06-25
  • 打赏
  • 举报
回复
To being21(民谣):
我水平是很一般,所以不懂才来问的。


刚才在2000里试了试,发现光具备db_datareader,db_datawriter角色好象不能执行存储过程?请愿意回答的高手回答。
being21 2007-06-25
  • 打赏
  • 举报
回复
你考虑是不是对角色的架构怎么处理一下,还是怎么弄。
我到此为止了!
being21 2007-06-25
  • 打赏
  • 举报
回复
我现在知道一个用户可以有多个架构,而一个架构只能属于一个用户或角色。
--你可以建立两个用户,同时拥有一个架构。默认的架构也可以是一样的。
--2000里面架构和用户是一一对应的,现在不是了。
问题是,我有两个用户A_User1,A_User2都要执行“A_Owner”架构下的存储过程。A_User1和A_User2的数据库角色为db_datareader,db_datawriter,但是执行“A_Owner”架构下存储过程被拒绝。
我试验了,如果数据库角色为A_Owner,那么就可以执行了。
而用户A_Owner的数据库角色为db_owner,即使架构“A_Owner”不属于用户A_Owner,他仍然可以执行存储过程。

角色db_datareader,db_datawriter所具备的权限,难道只能应用于用户A_User1,A_User2下面的架构吗?

--我把A_User1和A_User2的默认架构改为A_Owner,仍然不能执行。说明是角色db_datareader,db_datawriter的权限问题。因该和架构无关。

-------------------------------个人看法,水平一般!

mademelaugh 2007-06-25
  • 打赏
  • 举报
回复
如果都给dbo的权限,我何必建这么多用户?
y_dong119 2007-06-25
  • 打赏
  • 举报
回复
顶,没有用过2005
being21 2007-06-25
  • 打赏
  • 举报
回复
先发表声明:我水平不高!
你问问老大吧!他老人家的SQL2000升级SQL2005都实践完成了。
我的还是N多问题,和你一个水平!!!

如果你想让不同的架构有不同的权限,那么你需要在
架构属性的--权限
--查看数据库权限(在数据库名字的下面的蓝字)
这样你就可以看见数据库下面的用户了!
选择用户A--点击[用户有效权限]就可以看见这个用户的权限了。
如果想更改的话,在下面的那些选项里面更改,select,insert等都可以在这里设置!
我试验完了。
看你了!!!
hb_gx 2007-06-24
  • 打赏
  • 举报
回复
架构就是一命名空间,和c#里面的命名空间差不多的意思

只是这个架构是需要权限访问的
你既然那么多用户都需要访问完全可以给他们dbo的权限

在2005里面定义表还有存储过程什么的最好就把这个架构加上去,不加就是他们各自默认的架构

比如create table 架构.表名
访问的时候也是一样
select * from 架构.表名
mademelaugh 2007-06-24
  • 打赏
  • 举报
回复
我现在知道一个用户可以有多个架构,而一个架构只能属于一个用户或角色。问题是,我有两个用户A_User1,A_User2都要执行“A_Owner”架构下的存储过程。A_User1和A_User2的数据库角色为db_datareader,db_datawriter,但是执行“A_Owner”架构下存储过程被拒绝。而用户A_Owner的数据库角色为db_owner,即使架构“A_Owner”不属于用户A_Owner,他仍然可以执行存储过程。

角色db_datareader,db_datawriter所具备的权限,难道只能应用于用户A_User1,A_User2下面的架构吗?
essenza 2007-06-24
  • 打赏
  • 举报
回复
SQL2005中引用了一个概念,SCHEMA 架构

它更像是ORACLE中的表空间,在SQL2000中建一个表,以前是所有者

现在是指定一个架构。在SQL2005中把架构和表拥有者分开

它把表进行分类,以提高查询性能。每个用户也有相应的架构和默认架构,和它

相对应的表。而用户查询不在同一架构的表,就要一定要指定一个架构先。

使用:

create schema imcc
go

语句就可以建立,也可以在菜单中进行更简单的操作。

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧