HTTP-Antwort (Abfrage/Verwaltung)

Antwortstatus

Die HTTP-Antwort status Zeile folgt den HTTP-Standardantwortcodes. Code 200 gibt beispielsweise den Erfolg an.

Die folgenden status Codes werden derzeit verwendet, obwohl jeder gültige HTTP-Code zurückgegeben werden kann.

Code Subcode BESCHREIBUNG
100 Continue Der Client kann die Anforderung weiterhin senden.
200 OK Die Verarbeitung der Anforderung wurde erfolgreich gestartet.
400 BadRequest Die Anforderung ist falsch formatiert und (dauerhaft) fehlgeschlagen.
401 Nicht autorisiert Der Client muss sich zuerst authentifizieren.
403 Verboten Die Clientanforderung wird abgelehnt.
404 NotFound Die Anforderung verweist auf eine nicht vorhandene Entität.
413 PayloadTooLarge Die Anforderungsnutzlast hat die Grenzwerte überschritten.
429 TooManyRequests Die Anforderung wurde aufgrund einer Drosselung abgelehnt.
504 Timeout Für die Anforderung ist ein Timeout aufgetreten.
520 ServiceError Der Dienst hat beim Verarbeiten der Anforderung einen Fehler gefunden.

Hinweis

Der Code 200 status zeigt an, dass die Anforderungsverarbeitung erfolgreich gestartet wurde und nicht, dass sie erfolgreich abgeschlossen wurde. Fehler, die während der Anforderungsverarbeitung auftreten, nachdem der Code 200 status zurückgegeben wurde, werden als "Partielle Abfragefehler" bezeichnet, und wenn sie auftreten, werden spezielle Indikatoren in den Antwortdatenstrom eingefügt, um den Client darüber zu benachrichtigen, dass sie aufgetreten sind.

Antwortheader

Die folgenden benutzerdefinierten Header werden zurückgegeben.

Benutzerdefinierter Header BESCHREIBUNG
x-ms-client-request-id Der eindeutige Anforderungsbezeichner, der im Anforderungsheader mit demselben Namen oder einem eindeutigen Bezeichner gesendet wird.
x-ms-activity-id Ein global eindeutiger Korrelationsbezeichner für die Anforderung. Sie wird vom Dienst erstellt.

Antworttext

Wenn der status Code 200 ist, ist der Antworttext ein JSON-Dokument, das die Ergebnisse der Abfrage oder des Verwaltungsbefehls als Sequenz rechteckiger Tabellen codiert. Weitere Informationen siehe unten.

Hinweis

Die Reihenfolge der Tabellen wird vom SDK widerspiegelt. Wenn Sie beispielsweise die .NET Framework Kusto.Data-Bibliothek verwenden, wird die Tabellensequenz dann zu den Ergebnissen im objekt, das System.Data.IDataReader vom SDK zurückgegeben wird.

Wenn der status Code einen 4xx- oder 5xx-Fehler angibt, der nicht 401 ist, ist der Antworttext ein JSON-Dokument, das die Details des Fehlers codiert. Weitere Informationen finden Sie unter Microsoft REST-API-Richtlinien.

Hinweis

Wenn der Accept Header nicht in der Anforderung enthalten ist, ist der Antworttext eines Fehlers nicht unbedingt ein JSON-Dokument.

JSON-Codierung einer Sequenz von Tabellen

Die JSON-Codierung einer Sequenz von Tabellen ist ein einzelner JSON-Eigenschaftenbehälter mit den folgenden Name-Wert-Paaren.

Name Wert
Tabellen Ein Array des Table-Eigenschaftenbehälters.

Der Table-Eigenschaftenbehälter weist die folgenden Name-Wert-Paare auf.

Name Wert
TableName Eine Zeichenfolge, die die Tabelle identifiziert.
Spalten Ein Array des Column-Eigenschaftenbehälters.
Zeilen Ein Array des Row-Arrays.

Der Column-Eigenschaftenbehälter weist die folgenden Name-Wert-Paare auf.

Name Wert
ColumnName Eine Zeichenfolge, die die Spalte identifiziert.
DataType Eine Zeichenfolge, die den ungefähren .NET-Typ der Spalte bereitstellt.
ColumnType Eine Zeichenfolge, die den Skalardatentyp der Spalte bereitstellt.

Das Row-Array hat die gleiche Reihenfolge wie das entsprechende Spaltenarray. Das Row-Array verfügt außerdem über ein Element, das mit dem Wert der Zeile für die relevante Spalte übereinstimmt. Skalare Datentypen, die in JSON nicht dargestellt werden können, z datetime . B. und timespan, werden als JSON-Zeichenfolgen dargestellt.

Das folgende Beispiel zeigt ein mögliches solches Objekt, wenn es eine einzelne Tabelle namens enthält Table_0 , die eine einzelne Spalte Text vom Typ stringund eine einzelne Zeile enthält.

{
    "Tables": [{
        "TableName": "Table_0",
        "Columns": [{
            "ColumnName": "Text",
            "DataType": "String",
            "ColumnType": "string"
        }],
        "Rows": [["Hello, World!"]]
}

Ein weiteres Beispiel:

Screenshot: Strukturansicht einer JSON-Datei, die ein Array von Table-Objekten enthält

Die Bedeutung von Tabellen in der Antwort

In den meisten Fällen geben Verwaltungsbefehle ein Ergebnis mit einer einzelnen Tabelle zurück, die die vom Verwaltungsbefehl generierten Informationen enthält. Der Befehl gibt beispielsweise .show databases eine einzelne Tabelle mit den Details aller zugänglichen Datenbanken im Cluster zurück.

Abfragen geben im Allgemeinen mehrere Tabellen zurück. Für jede tabellenbasierte Ausdrucksanweisung werden eine oder mehrere Tabellen in der Reihenfolge generiert, die die von der -Anweisung erzeugten Ergebnisse darstellen.

Hinweis

Aufgrund von Batches und Fork-Operatoren können mehrere solche Tabellen vorhanden sein.

Häufig werden drei Tabellen erstellt:

  • Eine @ExtendedProperties Tabelle, die zusätzliche Werte bereitstellt, z. B. Clientvisualisierungsanweisungen (Vom Renderoperator bereitgestellte Informationen), Informationen zum effektiven Datenbankcursor der Abfrage oder Informationen zur effektiven Verwendung des Abfrageergebniscaches.

    Bei Abfragen, die mit dem v1-Protokoll gesendet werden, enthält die Tabelle eine einzelne Spalte vom Typ string, deren Wert eine JSON-codierte Zeichenfolge ist, z. B.:

    Wert
    {"Visualization":"piechart",...}
    {"Cursor":"637239957206013576"}

    Für Abfragen, die mit dem v2-Protokoll gesendet werden, enthält die Tabelle drei Spalten: (1) Eine integer Spalte namens TableId , die angibt, für welche Tabelle im Resultset der Datensatz gilt; (2) Eine string Spalte, die die Key Art der vom Datensatz bereitgestellten Informationen angibt (mögliche Werte: Visualization, ServerCacheund Cursor); (3) Eine dynamic Spalte, die die schlüsselbestimmten Informationen bereitstellt Value .

    TableId Schlüssel Wert
    1 ServerCache {"OriginalStartedOn":"2021-06-11T07:48:34.6201025Z",...}
    1 Visualisierung {"Visualization":"piechart",...}
  • Eine QueryStatus-Tabelle, die zusätzliche Informationen zur Ausführung der Abfrage selbst bereitstellt, z. B. ob sie erfolgreich abgeschlossen wurde oder nicht, und welche Ressourcen von der Abfrage verbraucht wurden.

    Diese Tabelle weist die folgende Struktur auf:

    Timestamp severity SeverityName StatusCode StatusBeschreibung Anzahl RequestId ActivityId SubActivityId ClientActivityId
    2020-05-02 06:09:12.7052077 4 Info 0 Abfrage erfolgreich abgeschlossen 1 ... ... ... ...

    Schweregradwerte von 2 oder kleiner weisen auf einen Fehler hin.

  • Eine TableOfContents-Tabelle, die zuletzt erstellt wird und die anderen Tabellen in den Ergebnissen auflistet.

    Ein Beispiel für diese Tabelle ist:

    Ordinal Variante Name Id PrettyName
    0 QueryResult PrimaryResult db9520f9-0455-4cb5-b257-53068497605a
    1 QueryProperties @ExtendedProperties 908901f6-5319-4809-ae9e-009068c267c7c7
    2 QueryStatus QueryStatus 00000000-0000-0000-0000-000000000000