|
于默认DBO 架构
go
create table tb1 (姓名 varchar(8),性别 char(2))
--这个表就属于sch架构
go
create schema sch
go
create table sch.tb2(姓名 varchar(8),性别 char(2),年龄 int)
-- 赋予df这个用户查询sch架构中的对象的权限.
go
grant select on schema::sch to df
go
setuser 'df' --切换用户df
select * from tb2
-- 此时报告"对象名无效" 因为tb2此时为默认的DBO架构,而实际上tb2属于sch架构.
--带上架构名称,就可以查询了
go
select * from sch.tb2
go
setuser -- 切换到sa
---切换到xhl
setuser 'xhl'
--不能查询,是因为没有权限
select * from sch.tb2
go
setuser --切换sa
--给df用户赋默认架构
alter user df with default_schema=sch
go
setuser 'df' --切换df
-- 此时不需要指定sch 也可以了,如果架构中还有其他对象,也可以查询
select * from tb2
go
setuser --切换sa
--创建第三张测试表,同样的是sch架构下
create table sch.tb3 (id int,uname varchar(8))
go
--切换用户df
setuser 'df'
---可以进行查询
select * from tb3
go
---但是无法进行数据插入,因为没有插入权限
insert into tb3 values (1,'abcde') --拒绝了insert权限
go
setuser
--赋插入权限
grant insert on schema::sch to df
--切换用户df
setuser 'df'
go
---可以进行数据插入
insert into tb3 values (1,'abcde') --OK!
---查询结果
select * from tb3
GO
Grant alter on schema::sch to df -- 使df 这个用户对架构中的数据对象有可更改的能力。
--错误
--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。
GO
Use master
go
Grant control server to df -- 使df这个用户能够控制服务器。
--错误
--无法对sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。
setuser
go
use schtest
go
--创建架构sch1
create schema sch1
go
-- 修改对象的架构tb2表的架构由sch 转移到sch1
alter schema sch1 transfer sch.tb2
go
--创建一个新用户,同时指定默认schema,默认属于DBO
create login yhy with password='sj1234',default_database=master
GO
use schTest
GO
create user yhy for login yhy with default_schema=sch --属于sch
--切换用户yhy
setuser 'yhy'
--查询表,对象名'tb2' 无效。
select * from tb2
go
setuser
--赋架构权限
grant select on schema::sch1 to yhy
--切换用户yhy
setuser 'yhy'
go
select * from tb2 ---还是无效,因为不在同一个schema
go
setuser
go
alter user yhy with default_schema=sch1 --更改yhy的默认架构
GO
--由于yhy不是当前用户,所以无法进行查询
select * from tb2
--显示当前用户
GO
select user
GO
--切换用户yhy
setuser 'yhy'
-- 此时就可以进行查询了,如果架构中还有其他对象,也可以查询
go
select * from tb2
--显示当前用户
select user
go
setuser
go
use master
go
---删除用户
drop user df
drop user xhl
drop user yhy
---删除登录名
drop login df
drop login yhy
drop login xhl
--删除数据库
drop database schTest
|