SQL Server - 为sysobjects返回SCHEMA

Ger*_*iss 29 sql t-sql sql-server

如何在sysobjects上进行选择时获得SCHEMA?

我正在修改一个名为SearchObjectsForText的存储过程,它只返回Name,但我还想包含SCHEMA.

现在它正在做类似的事情:

SELECT DISTINCT name
FROM sysobjects
Run Code Online (Sandbox Code Playgroud)

我想知道需要加入哪些表来为每个'name'返回SCHEME.

dev*_*vio 57

如果您指的是SQL Server 2005或更高版本,请使用sys.objects而不是sysobjects:

SELECT  sys.objects.name, sys.schemas.name AS schema_name
FROM    sys.objects 
INNER JOIN sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
Run Code Online (Sandbox Code Playgroud)

2005年推出了模式.高达2000,用户等于架构.SQL Server 2000的相同查询:

SELECT  sysusers.name AS OwnerName, sysobjects.name
FROM sysobjects
INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
Run Code Online (Sandbox Code Playgroud)


小智 14

在Sql Server 2005(及更高版本)上,您可以使用sys.objects视图:

select 
  name                    as  ObjectName,     
  schema_Name(schema_id)  as  SchemaName
from 
  sys.objects
Run Code Online (Sandbox Code Playgroud)

在Sql Server 2000(及以下版本)中,"schema"具有不同的概念含义.来自MSDN的说明:

在早期版本的SQL Server中,数据库可能包含一个称为"模式"的实体,但该实体实际上是一个数据库用户.SQL Server 2005是SQL Server的第一个版本,其中架构既是容器又是命名空间.