双点表限定符

时间:2016-01-14 09:37:29

标签: sql sql-server

我正在研究由外部供应商开发的新数据库模式。有两个数据库:

Database1
Database2

他们给我发了一个SQL语句,它连接两个数据库之间的表。有些地方他们使用双点符号。我以前从未见过这个。请参阅下面的SQL语句(这不是他们发给我的声明):

select * from database2..Person

上面的语句是从database1运行的。为什么它有两个点?如果我删除其中一个点,则查询不会运行。

我做了一些谷歌搜索并遇到了这个问题:http://www.sqlservercentral.com/Forums/Topic585446-338-1.aspx。这表明它指的是架构。但是:

  1. sql语句中的模式为空,即两个点之间没有文本。
  2. Person表是database2中dbo架构的一部分。

2 个答案:

答案 0 :(得分:16)

由于这个点,您的查询将选择默认架构(dbo)。

如果您有两个数据库,则需要提供表的完整路径。 如果我们有: Database1架构:dbo,来宾表dbo.A,来宾:A Database2架构:dbo,来宾表dbo.B,来宾:B

如果我们创建select语句,如:

  

从Database2..B

中选择*

我们正在从dbo.B表中选择数据 如果我们想指定架构,我们需要引用

select * from Database2.schemaname.tablename

编辑: 正如同事指出的那样,可以在数据库中更改默认架构,但是在这个特定示例中它似乎是dbo:)

答案 1 :(得分:11)

这是一个数据库架构。表的完整三部分名称是:

databasename.schemaname.tablename

对于用户的默认架构,您还可以省略架构名称:

databasename..tablename

您还可以指定链接服务器名称:

servername.databasename.schemaname.tablename

您可以阅读有关在MSDN

上使用标识符作为表名的更多信息