如何正确检索表ID

时间:2019-01-17 04:11:50

标签: sql-server

根据数据库理论,通过使用数据库的全限定名称catalog_name.schema_name.table_name成功识别数据库中的任何表。

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

SELECT object_id(table_name);

我应该使用第一句中的全限定表名作为此查询的参数吗?如果不是-引擎将如何知道我要的表是什么?

3 个答案:

答案 0 :(得分:0)

如果与对象位于同一数据库中,则可以使用架构限定名称。 例如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

答案 1 :(得分:0)

  • 首先,查看“ sys”模式,然后
  • 查看活动的默认架构,然后
  • 查看“ 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/

答案 2 :(得分:0)

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

对于主数据库中的每个对象都是从Object_ID定义的,有不同的表。 Sys.objects是具有因类型而异的所有条目的表(例如U-用户定义,T-

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

您可以从catalog_name.schema_name.table_name

访问的每个表

这是

  

catalog_name-是您的数据库名称

     

schema_name-是您的用户/架构名称(用于访问权限,默认情况下为dbo并具有所有权限)

     

table_name-是您的实际表名

How can I find tables name of selected database in MsSql

从db中的Sys开始的任何事情都是表和视图或过程等的保留和系统对象。