我想在ssms中查询,但我总是必须添加特定的模式作为前缀,尽管我已经运行了查询:
USE (the specific db I wanna use);
GO
我应该做些什么让ssms在查询时只从特定的db和模式中带回表?
在SQL Server中,您使用完全限定名。它由三个部分组成(虽然从技术上讲,当使用链接服务器时,您也可以添加一个服务器名部分):
数据库- <
- 模式/gh>表
和可以以以下方式使用:
SELECT * FROM <database>.<schema>.<table>
USE
关键字只是更改执行SQL命令的上下文。这与在SSMS中使用下拉框切换到不同的数据库相同。
通过切换数据库上下文,通常可以跳过上面的查询部分。通过切换上下文,假定所有命令都将在您更改到的数据库中执行。
它仍然存在的原因是,如果你想访问物理上驻留在同一个SQL Server实例的不同数据库中的对象。
模式只是对表进行分组的一种方式。默认模式是数据库所有者(dbo)。如果省略模式名称,则假定对象在dbo模式中。因此,假设以下两个命令是相同的:
SELECT * FROM dbo.MyTable
SELECT * FROM MyTable
然而,使用模式是构建数据库的好方法,因为您可以在同一模式中逻辑地对相关对象进行分组,并相应地分配权限。
从OLTP的角度来看,您可以有一个模式处理订单,一个模式处理销售。这样,人们可以更容易地只过滤他们感兴趣的对象,dba也可以更容易地将模式的访问限制在特定的部门。
如果您使用数据仓库,通常会看到Extract
模式、Stage
模式、Fact
和Dimension
模式。