ms sqlserver对象、所属用户、所属架构、登陆用户、同义词

ms sqlserver 的对象的所属用户、所属架构、与当前登陆用户之间的访问关系
用同义词来跨架构访问


1、以默认用户sa登陆,默认数据库架构为'dbo'
create table userTable(a varchar(10))

下面的查询都正确
select * from dbo.userTable
select * from userTable

2、创建架构mydbo
创建mydbo用户,将其默认架构设置成mydbo
将表userTable的架构改成mydbo
exec sp_changeobjectowner '[dbo].[userTable]',[mydbo]

此时执行
select * from mydbo.userTable
select * from userTable(会报错)


3、以mydbo登陆,执行
select * from mydbo.userTable
select * from userTable(也会报错)


总结:如果将某个对象的Schema(即架构)改成了xx,则访问此对象时,要加前缀xx.(如mydbo.),
      访问与登陆身份无关,只与此对象的所属架构有关


4、如果要访问非默认架构(dbo)的对象时,不加前缀(如mydbo.),可以使用同义词Synonym解决
如,给mydbo架构下的userTable表设置同义词为dbo架构
   USE [MyTempDB]
   GO
   /****** 对象: Synonym [dbo].[userTable]    脚本日期: 06/20/2008 16:22:50 ******/
   CREATE SYNONYM [dbo].[userTable] FOR [MyTempDB].[mydbo].[userTable]
此时执行

select * from mydbo.userTable
select * from userTable
都正确

总结:可以使用sql server新功能同义词解决跨架构访问,省去架构名称,
      与oracle中的跨用户访问时省去用户名的解决方法相同,即使用同义词

转载于:https://www.cnblogs.com/sobaby/archive/2008/08/17/1269744.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值