我试图为我在 StackOverflow 上的另一篇文章“描述”一个表,但是当我运行 sp_columns 时,没有显示任何结果或行。
sp_columns assignee
结果:
A bunch of column headers...
我的数据库有什么问题,为什么这不起作用?
我试图为我在 StackOverflow 上的另一篇文章“描述”一个表,但是当我运行 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 ----^^^^
此外,显然,请确保您在正确的数据库中。
对于特定架构,请尝试:
sp_columns tableName, schemaName
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'
;
如果您连接到错误的数据库,查询将正确执行,但不会返回任何结果。
例如,如果您assignee
在patents
数据库中调用了一个表并且正在对数据库运行此查询master
,您将不会得到任何结果并且不会出现错误:
sp_columns 'dbo.assignee';
结果:
Nothing, nada, zilch.
如果您更改连接以使查询适用于正确的数据库,您将获得结果。
尝试如下,
exec sp_columns yourTableName
这将返回可以在当前环境中查询的指定表和视图的列信息。
注意:如果表格包含数据,那么您将只获得数据列表。