我正在尝试为我在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 'dbo.tablename';
返回一个空集合,即使 EXEC sp_help 'dbo.tablename'
运行正常。编辑: EXEC sp_columns 'tablename', 'dbo'
可以工作!(同样不需要引号) - Andriy Msp_columns
正常工作,更应该停止使用sp_
存储过程,改用sys.columns
(或者在2012年后,使用新的元数据发现函数/存储过程)。特别是如果你有其他模式下的表 - 尝试在AdventureWorks中完成这些操作吧,祝你好运。 - Aaron Bertrandsp_columns
,只是为了自己的学习而查看它。正是sp_helptext sp_columns
向我展示了正确使用该存储过程的方法,但我同意您的观点,可能永远不需要使用sp_columns
。 - Andriy M请尝试以下方法:
exec sp_columns yourTableName
此操作将返回指定表和视图的列信息,这些表和视图可以在当前环境中进行查询。
注意:如果表包含数据,则只会返回数据列表。