Skip To Content

Erzwingen standardisierter SQL-Abfragen

ArcGIS Server bietet eine Sicherheitsoption, die Entwickler dazu zwingt, bei der Arbeit mit Karten-, Feature-, Image- und WFS-Services über REST oder SOAP standardisierte SQL-Abfragen zu verwenden. Dadurch können Entwickler und Anwendungen ArcGIS Server-Services leichter abfragen, und Angriffe durch Einschleusung von SQL-Befehlen werden verhindert. Standardisierte Abfragen werden standardmäßig erzwungen, diese Option kann jedoch vom Serveradministrator deaktiviert werden.

Standardisierte Abfragen

Wenn standardisierte Abfragen aktiviert sind, prüft ArcGIS Server auf Standardsyntax und erlaubt keine datenbankspezifischen Funktionen und Syntaxstrukturen. Wenn Sie als Anwendungsentwickler aktuell datenbankspezifische Funktionen und Syntax verwenden, müssen Sie die WHERE-Klauseln im Anwendungscode aktualisieren, sodass allgemeine SQL-Syntax verwendet wird, welche von ArcGIS unterstützt wird. Alternativ können Sie die Prüfung auf standardisierte Abfragen in ArcGIS Server deaktivieren.

Einschränkungen bei standardisierten Abfragen

Standardisierte Abfragen werden auf die gesamte ArcGIS Server-Site angewendet. Es ist nicht möglich, sie nur für einige Services zu deaktivieren.

Standardisierte Abfragen werden nicht für Verbindungen zwischen unterschiedlichen Workspaces unterstützt. Datenbanktabellen, auf die über eine OLE-DB-Verbindungsdatei zugegriffen wird, werden ebenfalls nicht unterstützt. Wenn die Service-Daten diese Quellen enthalten, müssen Sie alternative Methoden zum Referenzieren der Daten verwenden.

Unterabfragen in Form von WHERE-Klauseln, beispielsweise POP_2010 = (SELECT min(POP_2010)) FROM counties, werden nicht unterstützt.

Erstellen einer standardisierten Abfrage

In der Tabelle am Ende dieses Themas ist beschrieben, welche SQL-Funktionen in ArcGIS Server unterstützt werden. Anhand diese Tabelle wird vermittelt, welche SQL-Funktionen zum Erstellen standardisierter Abfragen herangezogen werden können, die für Karten-, Feature-, Image- und WFS-Services in Ihren Anwendungen verwendet werden können.

Feststellen, ob standardisierte Abfragen in ArcGIS Server verwendet werden

Wie oben erwähnt, sind standardisierte Abfragen standardmäßig aktiviert und gelten für alle Karten-, Feature-, Image- und WFS-Services auf der ArcGIS Server-Site. Serveradministratoren können jedoch überprüfen, ob standardisierte Abfragen verwendet werden, indem sie sich beim ArcGIS Server-Administratorverzeichnis anmelden und zu System > Eigenschaften > Update navigieren. Wenn im Dialogfeld Systemeigenschaften keine Systemeigenschaft angezeigt wird oder {"standardizedQueries": "true"} vorhanden ist, sind die standardisierten Abfragen aktiviert.

Alternativ können Administratoren, Anwendungsentwickler und Clients überprüfen, ob standardisierte Abfragen verwendet werden, indem sie einen Service über das Services-Verzeichnis von ArcGIS Server aufrufen und die Eigenschaft Standardisierte Abfragen verwenden überprüfen. Für Karten-, Feature- und WFS-Services kann die Eigenschaft überprüft werden, indem auf einen Layer oder eine Tabelle in dem Service zugegriffen wird, z. B. https://gisserver.domain.com:6443/arcgis/rest/services/folder/service/service type/0. Für Image-Services ist die Eigenschaft am Service-Endpunkt verfügbar, z. B. https://gisserver.domain.com:6443/arcgis/rest/services/folder/service/ImageServer.

Weitere Anweisungen zum Zugriff auf das Administratorverzeichnis oder zur Deaktivierung von standardisierten Abfragen finden Sie im nächsten Abschnitt dieses Themas.

Deaktivieren von standardisierten Abfragen

Wenn in Ihrer Anwendung datenbankspezifische WHERE-Klausel-Anweisungen verwendet werden müssen, können Sie die standardisierten Abfragen über das ArcGIS Server-Administratorverzeichnis deaktivieren. Führen Sie dazu folgende Anweisungen aus.

Vorsicht:

Die Deaktivierung dieser Sicherheitsoption kann zur Einschleusung von SQL-Befehlen führen.

Hinweis:

Das Deaktivieren standardisierter Abfragen wird für gehostete Feature-Services in ArcGIS Enterprise nicht unterstützt.

  1. Öffnen Sie das Administratorverzeichnis, und melden Sie sich bei der Site als Benutzer mit Administratorberechtigungen an.

    Das Administratorverzeichnis ist in der Regel unter https://gisserver.domain.com:6443/arcgis/admin verfügbar.

  2. Klicken Sie auf System > Eigenschaften > Update.
  3. Geben Sie auf der Seite Vorgang – Update die folgende Zeichenfolge in das Dialogfeld Systemeigenschaften ein:

    {"standardizedQueries": "false"}

  4. Klicken Sie auf Aktualisieren.
  5. Starten Sie ArcGIS Server erneut.

Die Site ist nun so konfiguriert, dass Benutzer unter Verwendung von nichtstandardisierten Abfragen Anforderungen an Karten-, Feature-, Image- und WFS-Services senden können. Wenn Sie standardisierte Abfragen erneut aktivieren möchten, wiederholen Sie die Anweisungen oben, und legen Sie die Eigenschaft standardizedQueries auf true fest.

Unterstützte SQL-Funktionen in ArcGIS Server

Aus der folgenden Liste geht hervor, welche SQL-Funktionen von ArcGIS Server unterstützt werden und wie die jeweilige Syntax lautet. Wenn die folgenden Funktionen und die Syntax in Ihren Anwendungen verwendet werden, konvertiert ArcGIS Server sie entsprechend den Spezifikationen der Datenbank, die von dem Service verwendet wird.

Diese Funktionen gelten für ArcGIS Server-Web-Services, nicht für gehostete Web-Layer.

FunktionstypFunktionBeschreibungBeispielHinweise

Datum

CURRENT_DATE

Gibt das aktuelle Datum in der Sitzungszeitzone zurück.

Datefield < CURRENT_DATE

Es wird nur die folgende Datums- und Zeitstempelsyntax unterstützt:

Datum ' JJJJ-MM-TT', beispielsweise Datefield = date '2012-05-29'

Zeitstempel 'JJJJ-MM-TT hh:mm.ss', beispielsweise, Datefield = timestamp '2012-05-29 15:14:25'

CURRENT_TIMESTAMP

Gibt die aktuelle lokale Uhrzeit zurück.

Timestampfield < CURRENT_TIMESTAMP

EXTRACT(extract_fieldFROM extract_source)

Gibt einen Teil der Datums-/Zeitangabe wie Jahr, Monat, Tag, Stunde, Minute usw. zurück.

Beim Argument extract_field kann es sich um eines der folgenden Schlüsselwörter handeln: YEAR, MONTH, DAY, HOUR, MINUTE oder SECOND.

Sucht alle Zeilen des Monats November:

EXTRACT(MONTH FROM Datefield) = 11

Mathematik

ABS(numeric_exp)

Gibt den absoluten (positiven) Wert des angegebenen numerischen Ausdrucks zurück.

CEILING(numeric_exp)

Gibt die kleinste Ganzzahl zurück, die größer als oder gleich dem angegebenen numerischen Ausdruck ist.

FLOOR(numeric_exp)

Gibt die größte Ganzzahl zurück, die kleiner oder gleich dem angegebenen numerischen Ausdruck ist.

LOG(float_exp)

Gibt den natürlichen Logarithmus des angegebenen Float-Ausdrucks zurück.

LOG10(float_exp)

Gibt den Logarithmus der Basis 10 des angegebenen float-Ausdrucks zurück.

POWER(numeric_exp, integer_exp)

Gibt den Wert des angegebenen Ausdrucks mit der angegebenen Potenz zurück.

POWER(Numericfield, 2) = 16

ROUND(numeric_exp, integer_exp)

Gibt einen numerischen Wert zurück, der auf die angegebene Länge oder Genauigkeit gerundet ist.

TRUNCATE(numeric_exp, integer_exp)

Gibt einen numerischen Wert an, ohne den Wert auf eine angegebene Länge oder Genauigkeit zu runden.

Zeichenfolge

CHAR_LENGTH(string_exp)

Gibt die Länge der Eingabezeichenfolge in Zeichen zurück.

CONCAT(string_exp1, string_exp2)

Gibt eine Zeichenfolge zurück, die das Ergebnis der Verkettung von mindestens zwei Zeichenfolgenwerten ist.

LOWER(string_exp)

Gibt einen Zeichenausdruck zurück, nachdem großgeschriebene Zeichendaten in kleingeschriebene konvertiert wurden.

SUBSTRING(string_exp FROM start FOR length)

Gibt einen Teil eines Zeichen- oder Textausdrucks zurück.

Sucht alle Zeilen, bei denen die ersten beiden Zeichen aus Werten in Stringfield "Ch" lauten:

SUBSTRING(Stringfield FROM 1 FOR 2)='Ch'

UPPER(string_exp)

Gibt einen Zeichenausdruck mit Daten zurück, deren Kleinbuchstaben in Großbuchstaben konvertiert wurden.