таблицы против представлений

Как известно, Microsoft не публикует информацию о таблицах базы данных SCCM. Я думаю, сделано это по двум причинам: во-первых, структура базы в любой момент может измениться, например, после выхода сервис-пака; во-вторых, снижение количества инцидентов, связанных с любопытством администраторов SCCM (то, что в народе называют «защитой от дурака»).

Часто можно встретить: «У меня не работает отчёт select … from SMS_R_SYSTEM. Где я ошибся в запросе?».

Так в чём разница между отчётами и запросами?

SCCM использует WMI для управления объектами. Информация об объектах хранится в базе SQL Server. При создании коллекции или запроса вы через консоль отправляете WQL(WMI Query Language)-запрос на сервер с установленной ролью SMS Provider (сервер выбирается при установке SCCM, впоследствии роль может быть перенесена на другой сервер), который, в свою очередь, обращается к базе данных и отображает информацию, которую вы запросили. Имена WMI-классов, которые сопоставляются с таблицами базы SCCM, начинаются на SMS_. Например,

select * from SMS_R_System

Соответственно, коллекция, построенная на основе такого запроса, будет содержать абсолютно все учётные записи компьютеров, о которых знает SCCM:

При создании отчёта вы работаете с представлениями. В большинстве случаев, когда представление работает только с одной таблицей, имя представления совпадает с именем WMI-класса и начинается на v_. Например,

SELECT dbo.v_R_System.*

FROM dbo.v_R_System

Результатом отчёта будет вся информация обо всех компьютерах:

Соответствующую представлению таблицу можно увидеть, открыв SQL Management Studio — Databases — имя базы — Views — имя представления — Design:

Представление v_R_System соответствует таблице System_DISK:

Если сделать запрос в таблицу, то мы увидим те же данные, которое отображает представление:

Leave a Reply