根据数据库理论,通过使用数据库的全限定名称catalog_name.schema_name.table_name
成功识别数据库中的任何表。
在SQL Server中,检索表ID的方法是:
SELECT object_id(table_name);
我应该使用第一句中的全限定表名作为此查询的参数吗?如果不是-引擎将如何知道我要的表是什么?
答案 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)
有关SQL Server中名称解析的旧文章,但仍很相关:
答案 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
开始的任何事情都是表和视图或过程等的保留和系统对象。