为什么sp_columns没有返回结果?

时间:2013-02-19 20:04:00

标签: sql-server

我正在尝试为StackOverflow上的不同帖子“描述”一个表,但是当我运行sp_columns时,没有显示结果或行。

sp_columns assignee

结果:

A bunch of column headers...

我的数据库有什么问题,为什么这不起作用?

5 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:1)

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

例如,如果assignee数据库中有一个名为patents的表,并且正在针对master数据库运行此查询,则不会得到任何结果,也不会出现错误:< / p>

sp_columns 'dbo.assignee';

结果:

Nothing, nada, zilch.

如果您更改连接以使查询适用于正确的数据库,您将获得结果。

答案 2 :(得分:0)

尝试以下,

exec sp_columns yourTableName

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

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

答案 3 :(得分:0)

对于特定架构,请尝试:

sp_columns tableName, schemaName

答案 4 :(得分:0)

INFORMATION_SCHEMA是ANSI标准。

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'MEMBER_FLAGS'
;

SELECT COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_PRECISION_RADIX
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'MEMBER_FLAGS'
;