日期:2014-05-18  浏览次数:20574 次

请教SQL2005中架构的相关问题(Schema)


对于SQL Server 2005中的架构理解不是太好,只是用来处理对象的引用吗?只是作为对象容器?只是方便删或改用户?
既然说,用户是通过架构来拥有数据库对象的,那么在权限上分配,架构有发挥作用吗?
感觉Grant依然都直接和角色或用户直接打交道。用户仅能操作自己架构下的对象,而这个操作的权限是一切权限吗?用户可以关联多个架构,除了默认架构用DEFAULT_SCHEMA可以指定外,其他的关联怎么实现??

我自己测试了下,新建一个登录名为test并为其绑定AdventureWorks数据库的test_0用户,结果test_0虽然默认架构是dbo(书上说dbo架构拥有所有对象),但是test用户登录后依然不能对AdeventureWorks数据库进行Insert操作,必须把test_0加入到角色dbo后,才可以。

谁能更好地向我讲解下2005中架构的概念,十分感激。

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

另外架构可以解决多表重名的问题。
------解决方案--------------------
主要作用是将数据库对象(表、视图)等按应用模块分组,AdvertureWorks中就有一个humanresources架构,所有和人事管理有关表、视图等都在此架构中。