Megosztás a következőn keresztül:


URL-hivatkozások kérése BLOB adatokhoz sql:encode (SQLXML 4.0) használatával

A következőkre vonatkozik:SQL ServerAzure SQL Database

Egy annotált XSD sémában, amikor egy attribútumot (vagy elemet) egy BLOB oszlophoz jelölik a Microsoft SQL Serverben, az adatokat Base 64-es kódolt formátumban, XML-en belül térik vissza.

Ha egy hivatkozást (egy URI-t) szeretnél visszaadni, amelyet később használhatsz a BLOB adatok bináris formátumú lekérésére, megadd az sql:encode annotációt. A sql:encode egy egyszerű típusú attribútumon vagy elemen is megadhatod.

Megadjuk az sql:encode annotációt, hogy jelezze, hogy a mező értéke helyett egy URL-t kell küldeni. a sql:encode a fő kulcstól függ, amely egyetlen kiválasztást generál az URL-ben. A fő kulcs a sql:key-fields annotációval határozható meg.

A sql:encode annotációhoz hozzárendelhető az "url" vagy az "default" érték. Az "default" érték Base 64-szel kódolt formátumban adja vissza az adatokat.

A sql:encode annotáció nem használható sql:use-cdata vagy az ID, IDREF, IDREFS, NMTOKEN vagy NMTOKEN attribútumtípusokon. XSD fix attribútummal sem használható.

Megjegyzés:

A BLOB típusú oszlopokat nem használhatják kulcs vagy idegen kulcs részeként.

Példák

A következő példák alapján működő minták létrehozásához bizonyos követelményeknek kell megfelelned. További információért lásd: Az SQLXML futtatási követelmények példái.

A. A sql:encode meghatározása, hogy URL-hivatkozást kapjunk a BLOB adatokhoz

Ebben a példában a leképezési séma a LargePhoto attribútumon sql:encode-ot jelöli meg, hogy egy adott termékfotóhoz tartozó URI hivatkozást kapjon (ahelyett, hogy a bináris adatokat Base 64-es kódolt formátumban kérné).

<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>  
Egy minta-XPath lekérdezés tesztelése a sémához
  1. Másold le a fenti sémakódot, és illesztsd be egy szövegfájlba. Mentse el a fájlt sqlEncode.xml.

  2. Másold le a következő sablont, és illesztsd be egy szövegfájlba. Mentsd a fájlt sqlEncodeT.xml-ként ugyanabba a könyvtárba, ahol sqlEncode.xmlmentetted.

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

    A leképezési sémához (sqlEncode.xml) megadott könyvtári út viszonyítja azt a könyvtárat, ahol a sablon mentő. Abszolút út is meghatározható, például:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Hozd létre és használd az SQLXML 4.0 Test Scriptet (Sqlxml4test.vbs) a sablon végrehajtásához.

    További információ: SqlXML 4.0-lekérdezések végrehajtása az ADO használatával.

Ez az eredmény:

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