zoukankan      html  css  js  c++  java
  • 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中的跨用户访问时省去用户名的解决方法相同,即使用同义词

  • 相关阅读:
    linux环境下的时间编程
    golang1.13中重要的新特新
    vs2019+cmake实现Linux远程开发
    现代c++与模板元编程
    一个commit引发的思考
    golang中判断两个slice是否相等
    c++性能测试工具:计算时间复杂度
    c++性能测试工具:google benchmark入门(二)
    使用vs2019进行Linux远程开发
    智能指针和二叉树(3):图解查找和删除
  • 原文地址:https://www.cnblogs.com/sobaby/p/1269744.html
Copyright © 2011-2022 走看看