2013-02-19 149 views
2

我试图“描述”一个表格,我在StackOverflow上有不同的帖子,但是当我运行sp_columns时,没有显示任何结果或行。为什么sp_columns不返回结果?

sp_columns assignee 

结果:

A bunch of column headers... 

这有什么错我的数据库,为什么不工作的呢?

+3

什么用downvotes的?如果Q不好,至少说出为什么要编辑它或使其更好。 – mlissner 2013-02-19 20:14:03

+0

是不是我,但怀疑:你的问题是非常基本的,因为你连接到错误的数据库(用户错误)。这个问题不可能对未来的读者有价值。 – 2013-02-20 00:16:24

+0

尽管它可能是基本的,但我们现在已经获得了超过1,000个视图。 – mlissner 2013-11-11 18:35:24

回答

10

而不是sp_columns使用目录视图(这些sp_程序中的许多程序未针对新功能进行更新)。

SELECT name, system_type_id, ... 
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID('dbo.TableName'); 
    ---- yes this is important ----^^^^ 

此外,请确保您显然位于正确的数据库中。

1

如果您连接到错误的数据库,查询将无误地执行,但不会返回任何结果。

例如,如果你有一个在patents数据库称为assignee表和运行对master数据库这个查询,你会得到任何结果,没有错误:

sp_columns 'dbo.assignee'; 

结果:

Nothing, nada, zilch. 

如果您更改连接,以便查询适用于正确的数据库,则会得到结果。

+2

@AaronBertrand:我不知道为什么,但'EXEC sp_columns'dbo.tablename';'返回一个空集我,即使'EXEC sp_help'dbo.tablename''工作正常。 *编辑:*'EXEC sp_columns'tablename','dbo''工作! (也没有引号) – 2013-03-04 17:47:26

+0

@AndriyM什么版本的SQL Server?无论如何,如果你不能让'sp_columns'工作,更有理由停止使用'sp_'程序并使用'sys.columns'代替(或者,2012年,mew元数据发现函数/过程)。特别是如果你在'dbo'以外的模式中有表格 - 只需要在AdventureWorks中做很多这些工作;祝你好运。 – 2013-03-04 17:52:18

+0

@AaronBertrand:SQL Server 2008 R2 RTM。我从来没有使用过'sp_columns',只是看看它自己的教育。它是'sp_helptext sp_columns',它揭示了使用proc的正确方法,但我同意你的观点,可能永远不需要使用'sp_columns'。 – 2013-03-04 18:03:20

0

尝试如下,

exec sp_columns yourTableName 

这将返回可在当前环境中查询指定的表和视图的列信息。

注意:如果表中包含数据,那么您只会获得数据列表。

0

对于一个特定的模式,尝试:

sp_columns tableName, schemaName 
相关问题