为什么在ssms中需要查询全路径?



我想在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模式、FactDimension模式。

相关内容

  • 没有找到相关文章

最新更新