Freigeben über


Anfordern von URL-Verweisen auf BLOB-Daten mit 'sql:encode' (SQLXML 4.0)

Gilt für: SQL Server Azure SQL-Datenbank

Bei einem kommentierten XSD-Schema, wenn ein Attribut (oder Element) einer BLOB-Spalte in Microsoft SQL Server zugeordnet wird, werden die Daten im Base64-codierten Format innerhalb von XML zurückgegeben.

Wenn sie einen Verweis auf die Daten (einen URI) zurückgeben möchten, der später zum Abrufen der BLOB-Daten in einem Binärformat verwendet werden kann, geben Sie die sql:encode-Anmerkung an. Sie können "sql:encode" für ein Attribut oder element vom einfachen Typ angeben.

Geben Sie die sql:encode-Anmerkung an, um anzugeben, dass eine URL zum Feld anstelle des Werts des Felds zurückgegeben werden soll. sql:encode hängt vom Primärschlüssel ab, um eine Singletonauswahl in der URL zu generieren. Der Primärschlüssel kann mithilfe der Sql:key-fields-Anmerkung angegeben werden.

Der sql:encode-Anmerkung kann die "URL" oder der Standardwert zugewiesen werden. Mit dem Wert "default" werden die Daten im codierten Base-64-Format zurückgegeben.

Die sql:encode-Anmerkung kann nicht mit sql:use-cdata oder in den Attributtypen "ID", "IDREF", "IDREFS", "NMTOKEN" oder "NMTOKENS" verwendet werden. Sie kann auch nicht mit einem festen XSD-Attribut verwendet werden.

Hinweis

BLOB-Spalten können nicht als Teil eines Schlüssels oder Fremdschlüssels verwendet werden.

Beispiele

Es müssen bestimmte Anforderungen erfüllt sein, damit aus den folgenden Beispielen funktionierende Beispiele erstellt werden können. Weitere Informationen finden Sie unter Anforderungen für das Ausführen von SQLXML-Beispielen.

A. Angeben von sql:encode zum Abrufen eines URL-Verweises auf BLOB-Daten

In diesem Beispiel gibt das Zuordnungsschema "sql:encode " für das LargePhoto-Attribut an, um den URI-Verweis auf ein bestimmtes Produktfoto abzurufen (anstatt die Binärdaten im Base64-codierten Format abzurufen).

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
  
  <xsd:element name="ProductPhoto" sql:relation="Production.ProductPhoto"   
               sql:key-fields="ProductPhotoID" >  
   <xsd:complexType>  
      <xsd:attribute name="ProductPhotoID"  type="xsd:int"  />  
     <xsd:attribute name="LargePhoto" type="xsd:string" sql:encode="url" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
So testen Sie eine XPath-Beispielabfrage für das Schema
  1. Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen sqlEncode.xml.

  2. Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen sqlEncodeT.xml im gleichen Verzeichnis, in dem Sie sqlEncode.xml gespeichert haben.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="sqlEncode.xml">  
            /ProductPhoto[@ProductPhotoID=100]  
        </sql:xpath-query>  
    </ROOT>  
    

    Der für das Zuordnungschema (sqlEncode.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.

    Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.

Dies ist das Ergebnis:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
   <ProductPhoto ProductPhotoID="100"  
                 LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto" />   
</ROOT>