为什么sp_columns没有返回结果?

问题描述 投票:3回答:5

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

sp_columns assignee

结果:

A bunch of column headers...

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

sql-server
5个回答
10
投票

而不是sp_columns使用目录视图(许多这些sp_程序不会更新为新功能)。

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

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


1
投票

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

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

sp_columns 'dbo.assignee';

结果:

Nothing, nada, zilch.

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


1
投票

对于特定架构,请尝试:

sp_columns tableName, schemaName

0
投票

试试如下,

exec sp_columns yourTableName

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

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


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'
;
© www.soinside.com 2019 - 2024. All rights reserved.