| 
 Далее приводятся примеры SQL-запросов к базе данных PostgreSQL. Запросы к другим базам данных могут содержать некоторые отличия, обусловленные особенностями самой базы данных и тонкостями ее использования. 
  
 | 
Возможности языка SQL не позволяют учитывать в запросах иерархию групп и станций. 
 | 
 
 
 
Чтобы обратиться напрямую к базе данных 
1.Откройте Центр управления вашего Сервера Dr.Web. 2.Перейдите в раздел Администрирование → SQL-консоль. 3.Введите необходимый SQL-запрос. Примеры запросов приведены далее. 4.Нажмите кнопку Выполнить. Примеры SQL-запросов 
1.Найти станции, на которых установлена серверная версия ОС Windows и на которых вирусные базы старее, чем 2019.07.04-00:00:00 UTC (12.0). 
SELECT  
  stations.name Station,  
  groups_list.name OS,  
  station_products.crev Bases  
FROM  
  stations  
  INNER JOIN groups_list ON groups_list.platform =( 
    CAST(stations.lastos AS INTEGER) & ~15728640 
  )  
  AND ( 
    ( 
      CAST(stations.lastos AS INTEGER) & 2130706560 
    ) = 33554560 
  )  
  INNER JOIN station_products ON station_products.id = stations.id  
  AND station_products.product = '10-drwbases'  
  AND station_products.crev < 12020190704000000; 
 | 
 
 
 
2.Найти станции, имеющие в разделе Антивирусная сеть → Статистика → Состояние записи с серьезностью Высокая или Максимальная. 
SELECT  
  stations.name Station  
FROM  
  stations  
WHERE  
  id IN ( 
    SELECT  
      DISTINCT id  
    FROM  
      station_status  
    WHERE  
      severity >= 1342177280 
  ); 
 | 
 
 
 
3.Получить соответствие статусов и количества станций, имеющих эти статусы. 
SELECT  
  code Code,  
  COUNT(code) Num  
FROM  
  ( 
    SELECT  
      DISTINCT id,  
      code  
    FROM  
      station_status 
  ) AS t  
GROUP BY  
  Code  
ORDER BY  
  Code; 
 | 
 
 
 
4.Получить 10 наиболее популярных угроз, обнаруженных с 2019.06.01 по 2019.07.01 на станциях, входящих в группу с идентификатором '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5' или в любые вложенные в нее группы. 
SELECT  
  cat_virus.str Threat,  
  COUNT(cat_virus.str) Num  
FROM  
  station_infection  
  INNER JOIN cat_virus ON cat_virus.id = station_infection.virus  
WHERE  
  station_infection.infectiontime BETWEEN 20190601000000000  
  AND 20190701000000000  
  AND station_infection.id IN ( 
    SELECT  
      sid  
    FROM  
      station_groups  
    WHERE  
      gid = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5'  
      OR gid IN ( 
        SELECT  
          child  
        FROM  
          group_children  
        WHERE  
          id = '373a9afb-9c9a-4d4d-b9b1-de817b96bcc5' 
      ) 
  )  
GROUP BY  
  cat_virus.str  
ORDER BY  
  Num DESC  
LIMIT  
  10; 
 | 
 
 
 
5.Получить 10 наиболее заражаемых станций. 
SELECT  
  Station,  
  Grp,  
  Num  
FROM  
  ( 
    SELECT  
      stations.id,  
      groups_list.id,  
      stations.name Station,  
      groups_list.name Grp,  
      COUNT(stations.id) Num  
    FROM  
      station_infection  
      INNER JOIN stations ON station_infection.id = stations.id  
      INNER JOIN groups_list ON groups_list.id = stations.gid  
    GROUP BY  
      stations.id,  
      groups_list.id,  
      stations.name,  
      groups_list.name  
    ORDER BY  
      Num DESC  
    LIMIT  
      10 
  ) AS t; 
 | 
 
 
 
6.Удалить членство всех станций из пользовательских групп, которые не являются первичными для этих станций. 
DELETE FROM  
  station_groups; 
INSERT INTO station_groups(sid, gid)  
SELECT  
  stations.id,  
  groups_list.id  
FROM  
  stations  
  INNER JOIN groups_list ON stations.gid = groups_list.id  
  AND groups_list.type NOT IN(1, 4); 
 | 
 
 
 
7.Найти объекты антивирусной сети, в которых указанный домен присутствует в белом списке компонента SpIDer Gate, в персональных настройках. 
SELECT  
  stations.name Station  
FROM  
  station_cfg  
  INNER JOIN stations ON stations.id = station_cfg.id  
WHERE  
  station_cfg.component = 38  
  AND station_cfg.name = 'WhiteVirUrlList'  
  AND station_cfg.value = 'domain.tld'; 
SELECT  
  groups_list.name Grp  
FROM  
  group_cfg  
  INNER JOIN groups_list ON groups_list.id = group_cfg.id  
WHERE  
  group_cfg.component = 38  
  AND group_cfg.name = 'WhiteVirUrlList'  
  AND group_cfg.value = 'domain.tld'; 
SELECT  
  policy_list.name Policy  
FROM  
  policy_cfg  
  INNER JOIN policy_list ON policy_list.id = policy_cfg.id  
WHERE  
  policy_cfg.component = 38  
  AND policy_cfg.name = 'WhiteVirUrlList'  
  AND policy_cfg.value = 'domain.tld'; 
 | 
 
 
 
8.Получить из аудита события неудачного входа администраторов в Центр управления с соответствующими кодами ошибки авторизации. 
SELECT  
  admin_activity.login Login,  
  admin_activity.address Address,  
  activity_data.value ErrorCode,  
  admin_activity.createtime EventTimestamp  
FROM  
  admin_activity  
  INNER JOIN activity_data ON admin_activity.record = activity_data.record  
WHERE  
  admin_activity.oper = 10100  
  AND admin_activity.status != 1  
  AND activity_data.item = 'Error'; 
 | 
 
 
 
9.Найти станции под ОС Windows, на которых не установлены необходимые исправления безопасности. 
SELECT  
  stations.name Station  
FROM  
  stations  
WHERE  
  id NOT IN ( 
    SELECT  
      station_env_kb.id  
    FROM  
      station_env_kb  
      INNER JOIN stations ON stations.id = station_env_kb.id  
    WHERE  
      ( 
        CAST(stations.lastos AS INTEGER) & 2130706432 
      )= 33554432  
      AND station_env_kb.name IN ( 
        SELECT  
          id  
        FROM  
          env_strings  
        WHERE  
          str IN( 
            'KB4012212', 'KB4012213', 'KB4012214',  
            'KB4012215', 'KB4012216', 'KB4012217',  
            'KB4012598' 
          ) 
      ) 
  ); 
 | 
 
 
 
 |