SQL Server INFORMATION_SCHEMA содержимое - PullRequest
1 голос
/ 22 апреля 2011

В большинстве RDBMS метамодель является «самодостаточной», что означает, что я могу узнать модель метамодели, просматривая саму метамодель. Похоже, что это не так с SQL Server. Что я хочу сделать, это:

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

Таким образом, я могу обнаружить саму схему INFORMATION_SCHEMA.

Существуют ли какие-либо настройки предоставления / разрешения / входа в систему, которые мне нужно настроить, чтобы INFORMATION_SCHEMA представления были "автономными"?

Ответы [ 3 ]

1 голос
/ 22 апреля 2011

Не думай, что это возможно.

Определение представления 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.

1 голос
/ 22 апреля 2011

Вы можете использовать sys.all_views

select SCHEMA_NAME(schema_id), name
from sys.all_views
order by 1,2
0 голосов
/ 22 апреля 2011
USE information_schema;
SHOW TABLES;

USE mysql;
SHOW TABLES ;
...