(0) exportieren Drucken
Alle erweitern

Query Entities

Letzte Aktualisierung: Februar 2014

Der Query Entities-Vorgang fragt Entitäten einer Tabelle ab und enthält die Optionen $filter und $select.

Bei Anforderungen, die die $select-Abfrageoption verwenden, muss die Anforderung mithilfe der Version 2011-08-18 oder höher ausgeführt werden. Darüber hinaus müssen der DataServiceVersion-Header und der MaxDataServiceVersion-Header auf 2.0 festgelegt werden. Die Query Entities-Anforderung kann wie folgt erstellt werden. HTTPS wird empfohlen. Ersetzen Sie myaccount durch den Namen des Speicherkontos und mytable durch den Namen der Tabelle:

 

Methode Anforderungs-URI HTTP-Version

GET

https://myaccount.table.core.windows.net/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

https://myaccount.table.core.windows.net/mytable()?$filter=<query-expression>&$select=<comma-separated-property-names>

HTTP/1.1

Die Adresse der Entität, die für die Abfrage festgelegt werden soll, kann im Anforderungs-URI verschiedene Formate aufweisen. Weitere Informationen finden Sie unter Abfragen von Tabellen und Entitäten.

Wenn Sie eine Anforderung für den emulierten Speicherdienst ausführen, geben Sie den Emulatorhostnamen und den Port des Tabellendiensts mit 127.0.0.1:10002 an, gefolgt vom Namen des emulierten Speicherkontos:

 

Methode Anforderungs-URI HTTP-Version

GET

http://127.0.0.1:10002/devstoreaccount1/mytable(PartitionKey='<partition-key>',RowKey='<row-key>')?$select=<comma-separated-property-names>

http://127.0.0.1:10002/devstoreaccount1/mytable()?$filter=<query-expression>?$select=<comma-separated-property-names>

HTTP/1.1

Der Tabellendienst im Speicheremulator unterscheidet sich auf mehrere Weisen vom Windows® Azure™-Tabellendienst. Weitere Informationen finden Sie unter About Development Storage und Unterschiede zwischen dem Speicheremulator und den Azure-Speicherdiensten.

Der Query Entities-Vorgang unterstützt die in der OData-Protokollspezifikation definierten Abfrageoptionen. Weitere Informationen finden Sie in den OData-URI-Konventionen.

In der folgenden Tabelle werden erforderliche und optionale Anforderungsheader beschrieben.

 

Anforderungsheader Beschreibung

Authorization

Erforderlich. Gibt das Authentifizierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Authentifizierung für die Azure-Speicherdienste.

Date - oder - x-ms-date

Erforderlich. Gibt die Uhrzeit der Anforderung in koordinierter Weltzeit (UTC) an. Weitere Informationen finden Sie unter Authentifizierung für die Azure-Speicherdienste.

x-ms-version

Optional. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste.

Accept

Optional. Gibt den akzeptierten Inhaltstyp der Antwortnutzlast an. Folgende Werte sind möglich:

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

Weitere Informationen finden Sie unter Nutzlastformat für Tabellendienstvorgänge.

x-ms-client-request-id

Optional. Stellt einen vom Client generierten, nicht transparenten Wert mit einer Zeichenbeschränkung von 1 KB bereit, der in den Analyseprotokollen erfasst wird, wenn die Protokollierung der Speicheranalyse aktiviert ist. Die Verwendung dieses Headers wird dringend empfohlen, um clientseitige Aktivitäten mit den vom Server empfangenen Anforderungen zu korrelieren. Weitere Informationen finden Sie unter Informationen zur Protokollierung durch die Speicheranalyse und Windows Azure-Protokollierung: Verwenden von Protokollen zur Nachverfolgung von Speicheranforderungen.

Request Syntax:
GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince  HTTP/1.1
Request Headers:
x-ms-version: 2013-08-15
x-ms-date: Mon, 25 Nov 2013 15:25:14 GMT
Authorization: SharedKeyLite myaccount:<some key>
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 2.0;NetFx
MaxDataServiceVersion: 2.0;NetFx

Die Antwort enthält den HTTP-Statuscode, einen Satz von Antwortheadern und einen Antworttext.

Bei einem erfolgreichen Vorgang wird der Statuscode 200 (OK) zurückgegeben.

Weitere Informationen zu Statuscodes finden Sie unter Status- und Fehlercodes und Fehlercodes für den Tabellendienst.

Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann außerdem weitere HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.

 

Antwortheader Beschreibung

x-ms-continuation-NextPartitionKey

x-ms-continuation-NextRowKey

Wenn die Anzahl der zurückzugebenden Entitäten 1000 überschreitet, das Servertimeoutintervall überschritten wird oder die Abfrage die Partitionsbegrenzung überschreitet, schließt der Antwortheader den x-ms-continuation-NextPartitionKey-Fortsetzungsheader und den x-ms-continuation-NextRowKey-Fortsetzungsheader ein.

Weitere Informationen zum Verwenden der Fortsetzungstoken finden Sie unter Abfragetimeout und Paginierung.

x-ms-request-id

Dieser Header identifiziert die erfolgte Anforderung eindeutig und kann für die Problembehandlung der Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung für API-Vorgänge.

x-ms-version

Gibt die Version des Tabellendiensts an, der zum Ausführen der Abfrage verwendet wird. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher erfolgen.

Date

Ein vom Dienst generierter Datums-/Uhrzeitwert in UTC, der angibt, wann die Antwort initiiert wurde.

Content-Type

Gibt den Inhaltstyp der Nutzlast an. Der Wert dieses Headers hängt vom Wert des Accept-Anforderungsheaders ab. Folgende Werte sind möglich:

  • application/atom+xml

  • application/json;odata=nometadata

  • application/json;odata=minimalmetadata

  • application/json;odata=fullmetadata

Weitere Informationen zu gültigen Inhaltstypen finden Sie unter Nutzlastformat für Tabellendienstvorgänge.

Response Status:
HTTP/1.1 200 OK
Response Headers:
Content-Type: application/atom+xml;charset=utf-8
x-ms-request-id: 87f178c0-44fe-4123-a4c1-96c8fa6d9654
Date: Mon, 25 Nov 2013 15:25:14 GMT
x-ms-version: 2013-08-15
Connection: close

Durch den Query Entities-Vorgang wird die Liste der Entitäten in einer Tabelle abhängig vom Accept-Header der Anforderung als OData-Entitätenmenge in einem JSON- oder Atom-Feed zurückgegeben.

Das folgende Beispiel zeigt einen Anforderungs-URI, der für einen Query Entities-Vorgang in der Tabelle Customers verwendet wird.

GET /myaccount/Customers()?$filter=(Rating%20ge%203)%20and%20(Rating%20le%206)&$select=PartitionKey,RowKey,Address,CustomerSince

Der Antworttext für einen Atom-Feed sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://myaccount.table.core.windows.net">
   <id>https://myaccount.table.core.windows.net/Customers</id>
   <title type="text">Customers</title>
   <updated>2013-08-22T00:50:32Z</updated>
   <link rel="self" title="Customers" href="Customers" />
   <entry m:etag="W/&quot;0x5B168C7B6E589D2&quot;">
      <id>https://myaccount.table.core.windows.net/Customers(PartitionKey='Customer',RowKey='Name')</id>
      <category term="myaccount.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
      <link rel="edit" title="Customers" href="Customers(PartitionKey='Customer',RowKey='Name')" />
      <title />
      <updated>2013-08-22T00:50:32Z</updated>
      <author>
         <name />
      </author>
      <content type="application/xml">
         <m:properties>
            <d:PartitionKey>Customer</d:PartitionKey>
            <d:RowKey>Name</d:RowKey>
            <d:Timestamp m:type="Edm.DateTime">2013-08-22T00:20:16.3134645Z</d:Timestamp>
            <d:CustomerSince m:type="Edm.DateTime">2008-10-01T15:25:05.2852025Z</d:CustomerSince>
         </m:properties>
      </content>
   </entry>
</feed>

Der JSON-Antwortfeed sieht wie folgt aus:

Keine Metadaten:

{
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

Minimale Metadaten:

{
   "odata.metadata":"https://myaccount.table.core.windows.net/$metadata#Customers",
   "value":[
      {
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

Vollständige Metadaten:

{
   "odata.metadata":" https://myaccount.table.core.windows.net/metadata#Customers",
   "value":[
      {
         "odata.type":"myaccount.Customers",
         "odata.id":"https://myaccount.table.core.windows.net/Customers(PartitionKey=Customer',RowKey='Name')",
         "odata.etag":"W/\"0x5B168C7B6E589D2\"",
         "odata.editLink":"Customers(PartitionKey=Customer',RowKey='Name')",
         "PartitionKey":"Customer",
         "RowKey":"Name",
         "Timestamp@odata.type":"Edm.DateTime",
         "Timestamp":"2013-08-22T00:20:16.3134645Z",
         "CustomerSince@odata.type":"Edm.DateTime",
         "CustomerSince":"2008-10-01T15:25:05.2852025Z"
      }
   ]
}

Dieser Vorgang kann durch den Kontobesitzer und von jedem Benutzer mit einer SAS (Shared Access Signature) ausgeführt werden, der über die Berechtigung zum Ausführen des Vorgangs verfügt.

Eine Abfrage für den Tabellendienst kann maximal 1000 Entitäten gleichzeitig zurückgeben und für maximal fünf Sekunden ausgeführt werden. Wenn das Resultset mehr als 1000 Entitäten enthält, die Abfrage nicht innerhalb von fünf Sekunden abgeschlossen wird oder die Abfrage die Partitionsbegrenzung überschreitet, schließt die Antwort die benutzerdefinierten Header mit einem Satz von Fortsetzungstoken ein. Die Fortsetzungstoken können verwendet werden, um eine nachfolgende Anforderung für die nächste Datenseite zu erstellen. Weitere Informationen zu Fortsetzungstoken finden Sie unter Abfragetimeout und Paginierung.

Für Projektionsanforderungen, die mithilfe der $select-Abfrageoption durchgeführt werden, muss die Version 2011-08-18 oder neuer verwendet werden. Die maximale Anzahl zurückgegebener Eigenschaften beträgt 255, und alle projizierten Eigenschaften sind auch dann im Antworttext enthalten, wenn die Eigenschaft nicht Teil der zurückgegebenen Entität ist. Wenn die Anforderung beispielsweise eine Eigenschaft enthält, die in der projizierten Entität nicht enthalten ist, wird die fehlende Eigenschaft mit einem NULL-Attribut gekennzeichnet. Der oben aufgeführte Beispielantworttext enthält die Eigenschaft Address, die nicht Teil der projizierten Entität ist. Daher ist die Eigenschaft null: <d:Address m:null=”true” />

Die zugewiesene Gesamtzeit für die Anforderung zum Planen und Verarbeiten der Abfrage beträgt 30 Sekunden, einschließlich fünf Sekunden für die Abfrageausführung.

Beachten Sie, dass die rechte Seite eines Abfrageausdrucks eine Konstante sein muss. Sie können auf der rechten Seite des Ausdrucks nicht auf eine Eigenschaft verweisen. Weitere Informationen zum Erstellen von Abfrageausdrücken finden Sie unter Abfragen von Tabellen und Entitäten.

Ein Abfrageausdruck darf keine NULL-Werte enthalten. Die folgenden Zeichen müssen codiert werden, wenn sie in einer Abfragezeichenfolge verwendet werden sollen:

  • Schrägstrich (/)

  • Fragezeichen (?)

  • Doppelpunkt (:)

  • At-Zeichen (@)

  • Kaufmännisches Und-Zeichen (&)

  • Gleichheitszeichen (=)

  • Pluszeichen (+)

  • Komma (,)

  • Dollarzeichen ($)

Jede Anwendung, die eine HTTP GET-Anforderung authentifizieren und senden kann, kann Entitäten einer Tabelle abfragen.

Weitere Informationen zu unterstützten Abfrageoperationen für den Tabellendienst über LINQ finden Sie unter Für den Tabellendienst unterstützte Abfrageoperatoren und Schreiben von LINQ-Abfragen für den Tabellendienst.

Anzeigen:
© 2014 Microsoft