Sql server 2008 使用SQL Server 2008 R2时,如何在结果网格中返回数据库列名?

Sql server 2008 使用SQL Server 2008 R2时,如何在结果网格中返回数据库列名?,sql-server-2008,Sql Server 2008,我有一个查询,它返回一个表中多个表中的所有列,但是我想确定哪些列名属于哪个表。有没有办法把这些结果放在结果表上 SELECT table_name=sysobjects.name, column_name=syscolumns.name, datatype=systypes.name, length=syscolumns.length FROM sysobjects JOIN syscolumns ON sysobjects.id = sy

我有一个查询,它返回一个表中多个表中的所有列,但是我想确定哪些列名属于哪个表。有没有办法把这些结果放在结果表上

SELECT table_name=sysobjects.name,
       column_name=syscolumns.name,
       datatype=systypes.name,
       length=syscolumns.length

  FROM sysobjects 

  JOIN syscolumns ON sysobjects.id = syscolumns.id

  JOIN systypes ON syscolumns.xtype=systypes.xtype

  WHERE sysobjects.xtype='U'

  ORDER BY sysobjects.name,syscolumns.colid

您需要更多信息吗?

您可以使用信息\u SCHEMA.COLUMNS视图:

SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_CATALOG='your database name' AND 
    TABLE_NAME='your table name'
你就不能用:

SELECT  *
FROM    INFORMATION_SCHEMA.COLUMNS
这将为您提供以下信息:

TABLE_CATALOG ,
        TABLE_SCHEMA ,
        TABLE_NAME ,
        COLUMN_NAME ,
        ORDINAL_POSITION ,
        COLUMN_DEFAULT ,
        IS_NULLABLE ,
        DATA_TYPE ,
        CHARACTER_MAXIMUM_LENGTH ,
        CHARACTER_OCTET_LENGTH ,
        NUMERIC_PRECISION ,
        NUMERIC_PRECISION_RADIX ,
        NUMERIC_SCALE ,
        DATETIME_PRECISION ,
        CHARACTER_SET_CATALOG ,
        CHARACTER_SET_SCHEMA ,
        CHARACTER_SET_NAME ,
        COLLATION_CATALOG ,
        COLLATION_SCHEMA ,
        COLLATION_NAME ,
        DOMAIN_CATALOG ,
        DOMAIN_SCHEMA ,
        DOMAIN_NAME

从SQLServer2005开始,您不应该再使用sysobjects视图-您应该使用sys schema中的catalog视图-sys.tables、sys.columns等等forth@Kamil-对不起。我不熟悉这个。我是否简单地用相关的表名等替换sysobjects等?否。sysobjects是存储表数据和syscolumns-column数据的系统表,包括表名和列名。但看起来我的大脑需要更新,因为获取数据的方法已经过时,在SQLServer2008中不推荐使用。你执行了SQL吗?这将返回您所需的所有内容。@Kamil-是的。谢谢。@Radke-我收到错误消息Msg 4104,16级,状态1,第4行多部分标识符KUpdate无法绑定。为什么在FROM和INFORMATION_SCHEMA.COLUMN之间留一个空格?没有原因,只是从我使用的脚本中复制和粘贴。很高兴知道为什么它值得投反对票。