架构的概念:架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的(联机帮助是这样说的)
SQL2005完全限定的对象名称现在包含四部分:server.database.schema.object (服务器名.数据库名.架构名.对象名)
默认架构:
SQL Server 2005 引入了“默认架构”的概念,用于解析未使用其完全限定名称引用的对象的名称。在 SQL Server 2000 中,首先检查的是调用数据库用户所拥有的架构,然后是 DBO 拥有的架构。在 SQL Server 2005 中,每个用户都有一个默认架构,用于指定服务器在解析对象的名称时将要搜索的第一个架构。可以使用 CREATE USER 和 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将把 DBO 作为其默认架构。
建立架构: create schema 架构名
查看架构: select * from sys.schemas
建立用户时可以在用户的属性->用户映射中修改选择默认架构
例如建立2个用户(分别是x和y,把用户x的默认架构设为sx,用户y的默认架构高为sy,他们的默认数据库都为TEST)
当x登陆并建立表1,实际上是sx.表1
当y登陆并建立表1,实际上是sy.表1
这样就可以建立两个表1了
如果建立用户时不特意指定,那它的默认架构就是dbo。多个用户可以共享一个默认架构以进行统一名称解析。
比如财务部有3个用户,那么可以建立一个架构,名称叫财务。
create schema 财务
select * from sys.schemas --查看一下
接着建立3个用户指定默认架构为财务,用户属性->用户映射中修改默认架构为财务
修改默认架构
如果要将数据库中一个表对象dbo.table1的架构改成财务
alter schema 财务 transfer dbo.table1 -- 当前用户必须有alter schema的执行权限
SQL2005跟.NET挂上关系后确实方便了
删除架构
在SQL2000里如果一个用户在数据库里拥有多个对象,那删除该用户前必须把它拥有的对象重命名或逐个删除之后,才能将用户删除。
在SQL2005里就不用了,因为对象都属于架构了。用户删了不会有什么影响
drop schema 架构名 --删除架构