我正在查看由外部供应商开发的新数据库架构。有两个数据库:

Database1
Database2

他们给我发送了一条SQL语句,该语句连接了两个数据库之间的表。在某些地方,他们使用了双点符号。我以前从未见过。请参阅下面的SQL语句(这不是他们发送给我的语句):
select * from database2..Person

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

我做了一些谷歌搜索,并遇到了这个:http://www.sqlservercentral.com/Forums/Topic585446-338-1.aspx。这表明它是指架构。然而:
  • 该模式在sql语句中为空,即两个点之间没有文本。
  • Person表是database2中dbo模式的一部分。
  • 最佳答案

    多亏了这个点,您为查询选择了默认架构(dbo)。

    当您有两个数据库时,需要提供表的完整路径。
    如果我们有:
    Database1模式:dbo, guest 表dbo.A, guest :A
    Database2模式:dbo, guest 表dbo.B, guest :B

    如果我们创建如下的select语句:



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

    select * from Database2.schemaname.tablename
    

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

    关于sql - 双点 table 预选赛,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34786049/

    10-16 23:05