Skip To Content

О стандартизированных запросах

ArcGIS Server имеет параметр безопасности, заставляющий разработчиков при работе с картографическим сервисом, сервисами объектов, изображений и WFS через REST или SOAP использовать стандартизированные SQL-запросы. Это позволяет упростить запросы разработчиков и приложений к сервисам ArcGIS Server и помогает предотвращать SQL-атаки. Стандартизированные запросы используются по умолчанию, однако, они могут быть отключены администратором сервера.

Каким образом нас затрагивают стандартизированные запросы?

При активации стандартизированных запросов, ArcGIS проверяет стандартный синтаксис и не допускает использования функций и синтаксиса, предназначенных только для определенных баз данных. Если вы разрабатываете приложения и используете специфический для базы данных синтаксис и функции, вам необходимо обновить выражения where в коде вашей программы с целью использования стандартного синтаксиса SQL, поддерживаемого ArcGIS. Либо можно отключить для ArcGIS Server проверку стандартизарованных запросов.

Ограничения стандартизированных запросов

Стандартизированные запросы применяются ко всему сайту ArcGIS Server и не могут быть включены для одних сервисов и выключены – для других.

Стандартизированные запросы не поддерживаются в соединениях между различными рабочими областями. Также не поддерживаются таблицы базы данных, доступные с помощью файла подключения OLE DB. Если данные сервиса содержат такие источники, следует использовать альтернативные методы для построения ссылок на данные.

Подзапросы, такие как выражение where, например, POP_2010 = (SELECT min(POP_2010) FROM counties не поддерживаются.

Как написать стандартизированный запрос?

В следующем разделе описываются SQL-функции, поддерживающиеся в ArcGIS Server:

SQL-функции, поддерживающиеся в ArcGIS Server

Используйте этот документ для определения SQL-функций, которые могут применяться для создания стандартизированных запросов, подходящих для картографических сервисов, сервисов объектов, изображений и WFS в ваших приложениях.

Как определить, используются ли стандартизированные запросы в ArcGIS Server?

Как указано выше, стандартизированные запросы включены по умолчанию и применяются ко всем картографическим сервисам, сервисам объектов, изображений и WFS на сайте ArcGIS Server. Однако администратор сервера может убедиться, что используются стандартные запросы, войдя в ArcGIS Server Administrator Directory и выбрав system (система) > properties (свойства) > update (обновить). Если в диалоговом окне Свойства системы (System Properties) отсутствует свойство системы либо указано {"standardizedQueries": "true"}, значит, стандартизированные запросы включены.

Или, администраторы, разработчики приложений и клиенты могут определить используемые стандартные запросы, открыв сервис с помощью ArcGIS Server Services Directory и просмотрев свойство Использовать стандартизированные запросы (Use Standardized Queries). Для сервисов карт, объектов и WFS просмотр свойств возможен через определенный слой или таблицу сервиса, например, http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/service type/0. Для сервисов изображений свойство доступно в конечной точке сервиса, например, http://gisserver.domain.com:6080/arcgis/rest/services/folder/service/ImageServer.

Для получения инструкций о порядке доступа к Administrator Directory и выключении стандартизированных запросов обратитесь к следующей части данного раздела.

Отключение стандартизированных запросов

Если в вашем приложении необходимо работать с выражениями where, специфическими для конкретной базы данных, выключите стандартизированные запросы в ArcGIS Server Administrator Directory. Для этого проделайте следующее.

Внимание:

Отключив опцию безопасности, вы сделаете ваш сайт более уязвимым по отношению к SQL-атакам.

  1. Откройте Administrator Directory и войдите под пользователем, имеющим права администратора вашего сайта . Administrator Directory обычно доступна по адресу http://gisserver.domain.com:6080/arcgis/admin.
  2. Щелкните система (system) > свойства (properties) > обновить (update).
  3. На странице Operation (операция) – update (обновить) введите в диалоговом окне Свойства системы (System Properties) следующую строку:

    {"standardizedQueries": "false"}

  4. Щелкните Обновить (Update).
  5. Перезапустите ArcGIS for Server.

Теперь ваш сайт позволяет пользователям посылать нестандартизированные запросы к картографическим сервисам, сервисам объектов, изображений и WFS. Чтобы снова включить стандартизированные запросы, повторите описанные выше шаги еще раз, но установите значение true для свойства standardizedQueries.