Condividi tramite


Richiesta di riferimenti URL a dati BLOB utilizzando sql:encode (SQLXML 4.0)

Si applica a: SQL Server database SQL di Azure

In uno schema XSD con annotazioni, quando viene eseguito il mapping di un attributo (o elemento) a una colonna BLOB in Microsoft SQL Server, i dati vengono restituiti in formato con codifica Base 64 all'interno di XML.

Se si vuole che venga restituito un riferimento ai dati (URI) che possono essere usati in un secondo momento per recuperare i dati BLOB in un formato binario, specificare l'annotazione sql:encode . È possibile specificare sql:encode in un attributo o un elemento di tipo semplice.

Specificare l'annotazione sql:encode per indicare che deve essere restituito un URL del campo anziché il valore del campo. sql:encode dipende dalla chiave primaria per generare una selezione singleton nell'URL. È possibile specificare la chiave primaria usando l'annotazione sql:key-fields .

All'annotazione sql:encode può essere assegnato il valore "url" o "default". Il valore "default" restituisce dati in formato con codifica Base 64.

Non è possibile usare l'annotazione sql:encode con sql:use-cdata o con i tipi di attributo ID, IDREF, IDREFS, NMTOKEN o NMTOKENS. Non può essere usato anche con l'attributo fisso XSD.

Nota

Non è possibile utilizzare le colonne di tipo BLOB come parte di una chiave o di una chiave esterna.

Esempi

Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per altre informazioni, vedere Requisiti per l'esecuzione di esempi SQLXML.

R. Specifica di sql:encode per ottenere un riferimento URL ai dati BLOB

In questo esempio, lo schema di mapping specifica sql:encode nell'attributo LargePhoto per recuperare il riferimento URI a una foto del prodotto specifica (anziché recuperare i dati binari nel formato con codifica Base 64).

<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>  
Per testare una query Xpath di esempio sullo schema
  1. Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file come sqlEncode.xml.

  2. Copiare il modello seguente e incollarlo in un file di testo. Salvare il file come sqlEncodeT.xml nella stessa directory nella quale è stato salvato sqlEncode.xml.

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

    Il percorso di directory specificato per lo schema di mapping (sqlEncode.xml) è relativo alla directory nella quale viene salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.

    Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.

Risultato:

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