SQL Server 2005/2008中的子模式

3

这是一个简单的问题,但我无法找到任何关于它的信息。

在SQL Server 2005/2008中是否可能有子模式?

示例: 有一个名为HR(人力资源)的模式,其中包含一个名为Training的子模式(与此相关的表)。 它将像HR.Training.*这样结束,其中*是表。

4个回答

5
不行。你可以通过将不同的用户放入不同的角色,并允许这些角色使用对象来伪造此功能。

2
也许您可以在模式的命名中伪造它,例如HR_Training.*和HR_Reviews.*等等。有点俗气,我知道。

1

你是不是有Oracle的背景?我相信Oracle有模式(Schema)的概念。在SQL Server中,最接近的等效物是数据库(Database)。

你可以很容易地从同一SQL服务器上的一个数据库交叉查询到另一个数据库,这将给你几乎相同的调用语法。

例如:server.database.owner.object

在你的情况下,它可能看起来像HRSvr.HR.dbo.xxx和HRSvr.Training.dbo.xxxx。


啊,谢谢。我不知道那个。 我不是来自Oracle背景,但我曾经学过它一段时间。 - Diogo Gomes
实际上,“owner”这个术语现在似乎也被称为“schema”,或者可能是“schema owner”?我有点脱节于最新/最伟大的SQL服务器术语,但我确信这在在线书籍中有很好的记录。无论如何,我认为有许多方法可以实现你想要的目标。 - Chris
MS SQL也有模式,自从MS SQL 2005以来,这些模式与所有者/用户不同,尽管如果需要可以相关联。 - Reversed Engineer
您的建议非常实用。然而,如果您在任何数据库中加密数据,您会发现在加密列上比较和连接数据会更具挑战性,因为这些值将无法被 SQL 服务器获取。某些基本操作是被支持的,但您将开始遇到跨域问题。 - Michael Earls

1

是的,你可以创建模式,但似乎不能创建子模式。我来自IBM db2背景,但我们这里的IT人员似乎不知道除了默认的“dbo”之外还可以创建其他模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接