为了简化管理操作,sql2005将数据对象,比如表、视图的所有者与架构分开,因此数据库对象不再是由用户拥有,改由架构拥有,而每个架构可以对应多个角色。如此以来,就可以让对位用户管理数据库对象。
权限分配上架构当然有作用:
用户和架构是多对多的关系。既然这样,你可以充分发挥你的自由。制定多个表属于一个架构,是不是很方便呢?
关联实现:
create schema my schema authorization db_owner
你的测试 架构是属于角色的,而不是直接给用户,如果这个用户没有加入拥有该架构的角色组,他怎么可能获得权限呢?另外架构可以解决多表重名的问题。

解决方案 »

  1.   

    "每个架构可以对应多个角色。如此以来,就可以让对位用户管理数据库对象。"1、你这么说的话,authorization指定的角色或用户才是真正拥有架构?DEFAULT_SHCEMA只是说该用户创建的对象默认所属的架构?2、而且,假如某个schema用authorization指定的不是角色而是用户的话,那么其他用户也想拥有这个架构的话,原先的关联不就要先取消掉?或者利用共属角色重新定义这个schema的authorization
      

  2.   

    对的authorization赋权, 创建即拥有也是SQL的原则
    指定用户就失去它的意义了!
      

  3.   

    主要作用是将数据库对象(表、视图)等按应用模块分组,AdvertureWorks中就有一个humanresources架构,所有和人事管理有关表、视图等都在此架构中。
      

  4.   

    "对的authorization赋权, 创建即拥有也是SQL的原则 
    指定用户就失去它的意义了!"
    创建即拥有没错,在没使用AUTHORIZATION的情况下默认拥有者是当前用户,
    而CREATE SCHEMA AUTHORIZATION指定的拥有者也可以不是当前用户啊我在2楼说的1、2两点你认为对不对呢?
      

  5.   

    1.对的,除去 创建即拥有也是SQL的原则,就是authorization赋权, 你自己的架构 
    2.schema是针对模块分组,便于管理,如果指定一个用户就失去它的意义了!