1

在大多数 RDBMS 中,元模型是“自包含的”,这意味着我可以通过浏览元模型本身来找出元模型的模型。SQL Server 似乎并非如此。我想做的是:

SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA'

这样,我可以发现INFORMATION_SCHEMA架构本身。

为了使INFORMATION_SCHEMA视图“自包含”,我必须配置任何授权/权限/登录设置吗?

4

3 回答 3

1

不要认为这是可能的。

INFORMATION_SCHEMA.TABLES视图的定义是

CREATE VIEW [INFORMATION_SCHEMA].[TABLES]
AS 
SELECT
    DB_NAME()           AS TABLE_CATALOG,
    s.name              AS TABLE_SCHEMA,
    o.name              AS TABLE_NAME,
    CASE o.type
        WHEN 'U' THEN 'BASE TABLE'
        WHEN 'V' THEN 'VIEW'
    END             AS TABLE_TYPE
FROM
    sys.objects o LEFT JOIN sys.schemas s
    ON s.schema_id = o.schema_id
WHERE
    o.type IN ('U', 'V')

所以它从中提取信息,sys.objects然而这反过来又不包含任何关于INFORMATION_SCHEMA对象的信息。

而是通过访问这些元数据sys.system_objects

于 2011-04-22T10:14:15.100 回答
1

您可以使用 sys.all_views

select SCHEMA_NAME(schema_id), name
from sys.all_views
order by 1,2
于 2011-04-22T10:28:57.123 回答
-1
USE information_schema;
SHOW TABLES;

USE mysql;
SHOW TABLES ;
于 2011-04-22T10:03:18.977 回答