云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_ecs虚拟主机_三重好礼

小七 141 0

当我开始写一篇关于XS Advanced中同义词用法的文档时,我注意到,尽管我交谈过的大多数人都知道同义词在原则上是如何工作的,但大多数人(包括我)在细节方面都有自己的问题。而在经典的SQL中,同义词的用法是可选的,在XS Advanced中,它们将是访问不同模式对象的唯一方法。

在这篇博文中,我试图解释什么是同义词以及它们在HANA SQL中的工作方式,但大多数同义词也将应用于其他数据库。

让我们考虑以下用例:

一个用户(SYN\u PROV)创建/拥有像表这样的DB对象,并通过同义词提供对其对象的访问。例如,可以是一个复制的ERP模式。第二个用户(SYNïCONS)直接或通过使用第一个用户的对象同义词。这个可以是我们开发的模式,创建DB视图等。第三个用户(SYN\u CONS2)只能使用第二个用户/模式的对象,而不能直接使用第一个用户的对象。可能是最终用户,不允许直接访问复制的ERP模式

为简单起见,我们将创建三个用户,并直接与这些用户及其默认模式(与用户同名)一起工作。在示例中,当您阅读类似"–user SYN\u PROV:"的内容时,这意味着,编码必须由该用户执行,并且当前模式是该用户的默认模式。最简单的方法是打开三个SQL控制台,每个用户一个。

同义词是DB对象的别名,大数据的培训,但它们本身并不是真正的DB对象(即使您可以在视图中找到它们)系统对象) . 每当你使用同义词时,试着用它的基本对象替换它,这和DB所做的差不多。同义词属于它自己的模式,它独立于DB对象所属的模式(当然,同义词及其基对象可以具有相同的模式)。目前,可以为表(包括虚拟表)、视图、过程、表函数、标量函数和序列创建同义词。可以使用同义词对使用者隐藏具体对象名称,以便以后交换具体对象,而无需更改其使用者。同样,你可以使用同义词给一个对象一个更方便的名字,可能是在你自己的模式中。使用同义词而不是它们的基本对象没有可测量的性能损失。

同义词不能用作其他同义词的基本对象。如果您想/需要将同义词指向其他同义词,则必须在它们之间放置一个真正的DB对象(即表和视图的视图、表函数的表函数、过程的过程、标量函数的标量函数,而序列则不可能)。首先,我将在schema SYN\u PROV中为同义词创建一些基本对象。

要创建同义词,用户需要表、视图和序列的"选择"权限作为基本对象,过程和函数的"执行"权限作为基本对象。创建后,同义词独立于基本对象而存在。这意味着,即使同义词的创建者不再具有访问基本对象的权限,或者甚至在基本对象被删除之后,同义词仍然存在。对同义词的访问在这两种情况下都会导致错误。

让我们在schema SYN \u CONS中创建两个同义词。

对于使用同义词,用户需要相应的权限来访问基本对象。没有访问同义词本身的特权。即使同义词模式的模式特权也不足以使用同义词。向用户授予同义词权限时,将授予对基本对象的幕后访问权限。当用户基于同义词创建视图并希望将此视图的访问权限授予第二个用户或角色时,第一个用户需要基本对象上的grant选项。这是完全相同的行为,云服务器是,就好像视图将直接在基本对象上创建一样。

让我们在同义词上创建一个视图并使用视图,云服务器价位,物联网系统,这两者都是在模式SYNèCONS中。

到目前为止,还不错。现在让我们授予另一个用户访问同义词和视图的权限。

语句失败,因为SYN\u CONS拥有SYN\u PROV的TAB1的SELECT特权,但是-如果没有grant选项,就不能授予从schema SYN\u PROV访问对象的特权。在HANA(和其他数据库)中,向另一个用户授予对其视图的访问权的用户需要在基础对象上使用GRANT选项。让我们把GRANT选项给用户SYN\u PROV,然后再试一次。

当你用同义词的基本对象替换同义词时,乍一看可能是一个bug的东西就变得很清楚了。同义词的基对象TAB1属于schema SYN\u PROV,而不是先前授予访问权限的schema SYN\u CONS。在很多情况下,表上的同义词的行为类似于包含所有字段的投影视图,而在这里,同义词的行为不同。让我们显式地给SYN\u CONS2访问同义词的权限,然后再试一次。

这意味着,如果同义词"指向"同义词模式之外的对象,那么仅仅授予访问同义词模式的权限并不授予访问另一个模式中的基对象的权限。即使所有者对基础对象授予了权限也不行。所以这一点需要注意:提供对整个模式的访问通常等同于提供对每个单独组件的访问。但是,要授予对同义词源对象的访问权,必须执行另一个步骤:授予对源对象的访问权。当我们查看用户SYN\u CONS2的对象特权时,我们看到,授予SYN\u CONS1.SYN1的不是对象特权,而是访问同义词的基本对象的对象特权。这引出了另一个想法:让我们取消从SYN\u CONS2访问schema SYN\u CONS的特权,大数据分析工具有哪些,看看会发生什么。我们只取消了schema SYS\u CONS的SELECT特权,但没有取消SYS_省表1