4

我试图为我在 StackOverflow 上的另一篇文章“描述”一个表,但是当我运行 sp_columns 时,没有显示任何结果或行。

sp_columns assignee

结果:

A bunch of column headers...

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

4

5 回答 5

11

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

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

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

于 2013-02-19T20:12:31.140 回答
2

对于特定架构,请尝试:

sp_columns tableName, schemaName
于 2016-11-29T14:57:14.393 回答
2

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'
;
于 2019-02-12T14:59:16.497 回答
1

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

例如,如果您assigneepatents数据库中调用了一个表并且正在对数据库运行此查询master,您将不会得到任何结果并且不会出现错误:

sp_columns 'dbo.assignee';

结果:

Nothing, nada, zilch.

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

于 2013-02-19T20:03:59.827 回答
0

尝试如下,

exec sp_columns yourTableName

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

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

于 2014-03-21T12:49:16.860 回答