таблицы против представлений
Как известно, 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:
Если сделать запрос в таблицу, то мы увидим те же данные, которое отображает представление: