本文上接SQL SERVER 2005/2008 中关于架构的理解(一) 架构的作用与示例 用户离开公司"问题,也就是在拥有该对象的用户离开公司,或离开该职务时, 必要大费周章地改该用户所有的对象属于新的用户所有。另外,也可让DBA 在安装某个套装软件时,设置该套装软
本文上接SQL SERVER 2005/2008 中关于架构的理解(一)
架构的作用与示例
“用户离开公司"问题,也就是在拥有该对象的用户离开公司,或离开该职务时,必要大费周章地改该用户所有的对象属于新的用户所有。另外,也可让 DBA 在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容区别。也就是说,在单一数据库内,同部门或目的的对象,可以通过架构区分同的对象命名原则与权限。
在 SQL Server 2005 /2008中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。并且可以在架构中创建具有用户友好名称的对象,明确指示对象的功能。例如,除了 cus.app.entry.customEntry 外,您还可以创建名为 cus.app.manifest.customEntry 的架构。因为“manifest”不是用户,,所以从数据库中删除用户后,无需更改此名称。这就简化了数据库管理员和开发人员的工作。
SQL Server 2005/2008 还引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 /2008中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
下面的显示SQL Server权限层次结构的图可能会给我们一个直观的认识:
SQL Server 2005/2008 Database Engine 管理着可以通过权限进行保护的实体的分层集合。这些实体称为“安全对象”。在安全对象中,最突出的是服务器和数据库,但可以在更细的级别上设置离散权限。SQL Server 通过验证主体是否已获得适当的权限来控制主体对安全对象执行的操作。
安全对象关系如下图:
下面举个具体的示例来说明以一下架构的作用。
master schTest ,default_database=schTest ,default_database=schTest go use schTest df for login df create user xhl for login xhl tb1 (姓名 varchar(8),性别 char(2)) sch sch.tb2(姓名 varchar(8),性别 char(2),年龄 int) ::sch to df tb2 sch.tb2 sch.tb2 df with default_schema=sch tb2 sch.tb3 (id int,uname varchar(8)) tb3 tb3 ) ::sch to df tb3 ) tb3 ::sch master schtest sch1 sch1 transfer sch.tb2 login yhy ,default_database=master GO use schTest yhy tb2 ::sch1 to yhy tb2 yhy tb2 tb2 tb2 master df drop user xhl drop user yhy login df drop login yhy drop login xhl schTest