我正在尝试为StackOverflow上的不同帖子“描述”一个表,但是当我运行sp_columns时,没有显示结果或行。
sp_columns assignee
结果:
A bunch of column headers...
我的数据库有什么问题,为什么这不起作用?
答案 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'
;