代码之家  ›  专栏  ›  技术社区  ›  Igor

如何正确检索表ID

  •  0
  • Igor  · 技术社区  · 6 年前

    根据数据库理论,数据库中的任何表都可以使用其完全限定名成功地进行标识。 catalog_name.schema_name.table_name .

    在SQL Server中,检索表ID的方法是:

    SELECT object_id(table_name);
    

    我应该使用第一句中的完全限定表名作为此查询的参数吗?如果不是-引擎怎么知道我要这张桌子?

    3 回复  |  直到 6 年前
        1
  •  0
  •   Venkataraman R    6 年前

    如果与对象在同一个数据库中,则可以使用模式限定名。 例如。, Schemaname.ObjectName

    USE AdventureWorks2012;  
    GO  
    SELECT OBJECT_ID(N'Production.WorkOrder') AS 'Object ID';  
    GO 
    

    如果您在不同的数据库中,与对象数据库相比,您必须使用对象的完全限定名。例如。 DatabaseName.SchemaName.ObjectName

    USE master;  
    GO  
    SELECT OBJECT_ID(N'AdventureWorks2012.Production.WorkOrder') AS 'Object ID';  
    GO 
    

    基本上,它从 sys.objects 目录视图并返回对象标识符。您可以阅读更多相关信息: object_id

        2
  •  0
  •   Dharmendar Kumar 'DK'    6 年前
    • 首先,查看__sys_157;模式,然后
    • 查看活动的默认模式,然后
    • 查看__dbo_模式。
    • 如果指定了模式名,SQL Server只需查找指定的模式。

    有关SQL Server中名称解析的旧的但仍然相关的文章:

    https://blogs.msdn.microsoft.com/sqlprogrammability/2006/04/03/name-resolution-default-schema-implicit-schema-part-i/

    https://blogs.msdn.microsoft.com/sqlprogrammability/2006/04/03/name-resolution-default-schema-implicit-schema-part-ii/

        3
  •  0
  •   Ajay2707 calm    6 年前

    为此,在sqlserver中有一个master数据库,其中所有其他数据库及其所有对象条目都在其中,并且存储在系统表中。

    对于master数据库中的每个对象,定义自 Object_ID ,有不同的表。sys.objects是一个表,它具有通过类型不同的所有条目(如u-user-defined,t-

    通过使用SQL Server中的以下系统表或元数据表,可以找到数据库中存在的所有表名(请参阅 Quara link )

    可以从中访问的每个表 catalog_name.schema_name.table_name

    这里是

    目录名称-是您的数据库名称

    schema_name-是您的用户名/架构名(对于访问权限,默认为其dbo和have all权限)

    表名-是您的实际表名

    How can I find tables name of selected database in MsSql

    任何事情都从 Sys 在数据库中,是保留对象和系统对象,可以是表、视图或过程,也可以是其他对象。