首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server返回sysobjects的架构

Server返回sysobjects的架构
EN

Stack Overflow用户
提问于 2009-05-27 18:59:02
回答 8查看 94.3K关注 0票数 36

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

我正在修改一个名为SearchObjectsForText的存储过程,它只返回名称,但我也希望包含模式。

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

代码语言:javascript
复制
SELECT DISTINCT name
FROM sysobjects

我想知道需要加入哪些表格才能为每个“名称”返回该计划。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-05-27 19:06:36

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

代码语言:javascript
复制
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

2005年引入了模式。到2000年为止,用户等同于架构。SQL Server 2000的相同查询:

代码语言:javascript
复制
SELECT  sysusers.name AS OwnerName, sysobjects.name
FROM sysobjects
INNER JOIN sysusers ON sysobjects.uid = sysusers.uid
票数 69
EN

Stack Overflow用户

发布于 2009-05-27 19:14:12

在Server 2005 (及以上)上,您可以使用sys.objects视图:

代码语言:javascript
复制
select 
  name                    as  ObjectName,     
  schema_Name(schema_id)  as  SchemaName
from 
  sys.objects

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

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

票数 14
EN

Stack Overflow用户

发布于 2009-05-27 19:07:06

你能用模式视图代替吗?

代码语言:javascript
复制
SELECT DISTINCT table_name, table_schema
FROM INFORMATION_SCHEMA.TABLES

根据MSDN页面 (用于Server 2008及以上版本),

不要使用INFORMATION_SCHEMA视图来确定对象的架构。查找对象架构的唯一可靠方法是查询sys.objects目录视图。

但是,它们似乎是指一个问题,您有一个表名,并且试图找到它的模式,如果有多个同名的表(在不同的模式中),它就不能工作。如果您正在查询多个结果(而不仅仅是试图为特定表找到模式),那么应该可以。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/917431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档