我试图“描述”一个表格,我在StackOverflow上有不同的帖子,但是当我运行sp_columns时,没有显示任何结果或行。为什么sp_columns不返回结果?
sp_columns assignee
结果:
A bunch of column headers...
这有什么错我的数据库,为什么不工作的呢?
我试图“描述”一个表格,我在StackOverflow上有不同的帖子,但是当我运行sp_columns时,没有显示任何结果或行。为什么sp_columns不返回结果?
sp_columns assignee
结果:
A bunch of column headers...
这有什么错我的数据库,为什么不工作的呢?
而不是sp_columns
使用目录视图(这些sp_
程序中的许多程序未针对新功能进行更新)。
SELECT name, system_type_id, ...
FROM sys.columns
WHERE [object_id] = OBJECT_ID('dbo.TableName');
---- yes this is important ----^^^^
此外,请确保您显然位于正确的数据库中。
如果您连接到错误的数据库,查询将无误地执行,但不会返回任何结果。
例如,如果你有一个在patents
数据库称为assignee
表和运行对master
数据库这个查询,你会得到任何结果,没有错误:
sp_columns 'dbo.assignee';
结果:
Nothing, nada, zilch.
如果您更改连接,以便查询适用于正确的数据库,则会得到结果。
@AaronBertrand:我不知道为什么,但'EXEC sp_columns'dbo.tablename';'返回一个空集我,即使'EXEC sp_help'dbo.tablename''工作正常。 *编辑:*'EXEC sp_columns'tablename','dbo''工作! (也没有引号) – 2013-03-04 17:47:26
@AndriyM什么版本的SQL Server?无论如何,如果你不能让'sp_columns'工作,更有理由停止使用'sp_'程序并使用'sys.columns'代替(或者,2012年,mew元数据发现函数/过程)。特别是如果你在'dbo'以外的模式中有表格 - 只需要在AdventureWorks中做很多这些工作;祝你好运。 – 2013-03-04 17:52:18
@AaronBertrand:SQL Server 2008 R2 RTM。我从来没有使用过'sp_columns',只是看看它自己的教育。它是'sp_helptext sp_columns',它揭示了使用proc的正确方法,但我同意你的观点,可能永远不需要使用'sp_columns'。 – 2013-03-04 18:03:20
尝试如下,
exec sp_columns yourTableName
这将返回可在当前环境中查询指定的表和视图的列信息。
注意:如果表中包含数据,那么您只会获得数据列表。
对于一个特定的模式,尝试:
sp_columns tableName, schemaName
什么用downvotes的?如果Q不好,至少说出为什么要编辑它或使其更好。 – mlissner 2013-02-19 20:14:03
是不是我,但怀疑:你的问题是非常基本的,因为你连接到错误的数据库(用户错误)。这个问题不可能对未来的读者有价值。 – 2013-02-20 00:16:24
尽管它可能是基本的,但我们现在已经获得了超过1,000个视图。 – mlissner 2013-11-11 18:35:24