SQL Server对象名称

用户名

我想知道是否有人可以解释联接中唯一标识sql服务器对象的概念。

在我的示例中,有2个模式和2个表(但名称相同)。我的假设是,即使两个模式之间的表名可能相同,但只要使用全限定名databasename.schemaname.objectname引用它们,SQL Server就应该能够区分出它们。但是,事实并非如此,解决方法是使用alias

如果有人可以解释或指出为什么sql server无法唯一标识这些文献,我将不胜感激

CREATE SCHEMA [Sch1]
GO

CREATE SCHEMA [Sch2]
GO

CREATE TABLE [Sch1].[Table_1](
    [ID] [int] NULL,
    [DESC] [nchar](10) NULL
) ON [PRIMARY]
GO

CREATE TABLE [Sch2].[Table_1](
    [ID] [int] NULL,
    [DESC] [nchar](10) NULL
) ON [PRIMARY]
GO


Select *
From Sch1.Table_1 
Join Sch2.Table_1
    on Sch1.Table_1.Id = Sch2.Table_1.Id
卢卡斯·索兹达(Lukasz Szozda)

SQL Server支撑船型多部分组成的标识符:

linked_server.db_name.schema.table_name

您的情况是:

Select *
From Sch1.Table_1 
Join Sch2.Table_1
    on Sch1.Table_1.Id = Sch2.Table_1.Id

现在您想知道为什么SQL Server不能区分它们:

Sch1.Table_1  != Sch2.Table_1

这种情况是因为SQL Server使用了一种称为的东西exposed name

公开名称

这是多部分表名最后一部分(如果没有别名),如果存在别名,则为别名

返回您的查询,您已经公开了名称Table_1Table_1这些名称是重复的,您需要使用别名。

来自SQL Server 2005+

重复表检测算法已作相应更改,因此具有相同公开名称的任何表都将被视为重复表

我怀疑您的代码可以与SQL Server 2000一起使用,但是我无法确定是否对其进行检查。

有关更多信息,请阅读 Msg 1013

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无效的对象名称SQL Server存储过程

来自分类Dev

SQL Server中使用的函数的无效对象名称错误

来自分类Dev

SQL Server 上的视图语句返回“无效的对象名称”

来自分类Dev

SQL Server错误208:无效的对象名称'Utils.dbo.ChangeLogging_DDLCommands'

来自分类Dev

Azure SQL无效的对象名称'sys.server_role_members'

来自分类Dev

无法删除临时表无效的对象名称'#Temp1'错误-SQL Server中

来自分类Dev

将.aspx中的数据输入到SQL Server中时,对象名称无效

来自分类Dev

SQL Server无效的列名无效的对象名

来自分类Dev

MS SQL Server 2008链接服务器查询显示“无效的对象名称”,但仍然有效

来自分类Dev

Visual C#SQL Server罗斯文数据库错误:无效的对象名称'dbo.Products'

来自分类Dev

exec语句后的SQL无效对象名称

来自分类Dev

删除时sql中的对象名称无效

来自分类Dev

T-SQL函数:无效的对象名称

来自分类Dev

SqlDataAdapter.Fill 无效的对象名称 SQL

来自分类Dev

使SSMS新查询窗口包含脚本化的对象名称而不是Query1.sql

来自分类Dev

关于执行例外的MS SQL JDBC错误-无效的对象名称[Play 2.x scala应用]

来自分类Dev

存储过程在SQL Mgt Studio中工作正常,但从MVC应用程序抛出无效的对象名称#AllActiveOrders

来自分类Dev

检索对象名称

来自分类Dev

获取对象名称

来自分类Dev

sql依赖项无效的对象名'

来自分类Dev

Identity Server 4 loggs(无效的对象名称“ DeviceCodes”)异常

来自分类Dev

for循环对象名称迭代

来自分类Dev

无效的对象名称“ C”

来自分类Dev

Qjson获取对象名称

来自分类Dev

替换对象名称

来自分类Dev

删除对象名称为“。”

来自分类Dev

CTE的对象名称无效

来自分类Dev

对象名称无效:“ master”

来自分类Dev

Firebase提取对象名称

Related 相关文章

  1. 1

    无效的对象名称SQL Server存储过程

  2. 2

    SQL Server中使用的函数的无效对象名称错误

  3. 3

    SQL Server 上的视图语句返回“无效的对象名称”

  4. 4

    SQL Server错误208:无效的对象名称'Utils.dbo.ChangeLogging_DDLCommands'

  5. 5

    Azure SQL无效的对象名称'sys.server_role_members'

  6. 6

    无法删除临时表无效的对象名称'#Temp1'错误-SQL Server中

  7. 7

    将.aspx中的数据输入到SQL Server中时,对象名称无效

  8. 8

    SQL Server无效的列名无效的对象名

  9. 9

    MS SQL Server 2008链接服务器查询显示“无效的对象名称”,但仍然有效

  10. 10

    Visual C#SQL Server罗斯文数据库错误:无效的对象名称'dbo.Products'

  11. 11

    exec语句后的SQL无效对象名称

  12. 12

    删除时sql中的对象名称无效

  13. 13

    T-SQL函数:无效的对象名称

  14. 14

    SqlDataAdapter.Fill 无效的对象名称 SQL

  15. 15

    使SSMS新查询窗口包含脚本化的对象名称而不是Query1.sql

  16. 16

    关于执行例外的MS SQL JDBC错误-无效的对象名称[Play 2.x scala应用]

  17. 17

    存储过程在SQL Mgt Studio中工作正常,但从MVC应用程序抛出无效的对象名称#AllActiveOrders

  18. 18

    检索对象名称

  19. 19

    获取对象名称

  20. 20

    sql依赖项无效的对象名'

  21. 21

    Identity Server 4 loggs(无效的对象名称“ DeviceCodes”)异常

  22. 22

    for循环对象名称迭代

  23. 23

    无效的对象名称“ C”

  24. 24

    Qjson获取对象名称

  25. 25

    替换对象名称

  26. 26

    删除对象名称为“。”

  27. 27

    CTE的对象名称无效

  28. 28

    对象名称无效:“ master”

  29. 29

    Firebase提取对象名称

热门标签

归档