如何查询SYS模式表中的列?

时间:2019-01-08 16:02:57

标签: sql sql-server

查询INFORMATION_SCHEMA.COLUMNS将检索表中的列名。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'EMR_FACILITY'
ORDER BY ORDINAL_POSITION

但是,似乎INFORMATION_SCHEMA中没有SYS模式信息。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'sys' AND TABLE_NAME = 'DM_OS_SCHEDULERS'
ORDER BY ORDINAL_POSITION

SELECT DISTINCT TABLE_SCHEMA
FROM INFORMATION_SCHEMA.COLUMNS

如何查询SYS模式表中的列?

3 个答案:

答案 0 :(得分:0)

sys.system_views保留系统视图,并且可以通过其自己的sys视图进行查看。

所有系统视图:

SELECT 
    SCHEMA_NAME(T.schema_id), 
    T.* 
FROM 
    sys.system_views T
WHERE
    SCHEMA_NAME(T.schema_id) = 'sys'

特定的系统视图列:

SELECT * FROM sys.system_columns AS T 
WHERE T.object_id = (SELECT X.object_id FROM sys.system_views AS X WHERE X.name = 'database_principals')

您可以尝试将它们连接起来以获取所有视图的所有列以及列数据类型。

答案 1 :(得分:0)

您可以在系统目录中获得更多详细信息(精度,长度,是否为null等)

SELECT
     o.name AS [Table_Name]
    ,c.name AS [Column_Name]
FROM sys.columns c
JOIN sys.objects o ON c.object_id = c.object_id
WHERE o.type = 'U' /* -> User Table*/
AND o.name = 'TABLE_NAME'

答案 2 :(得分:0)

sys.dm_os_schedulersmaster数据库中的一个视图(不是表)。您可以看到其列,如下所示:

select * from master..syscolumns
where id=Object_Id('master.sys.dm_os_schedulers')
order by colid

select * from master.sys.system_columns
where object_id=Object_Id('master.sys.dm_os_schedulers')
order by column_id