Udostępnij przez


Using the BINARY BASE64 Option

Jeśli określono opcję BASE64 BINARY w kwerendzie, dane binarne jest zwracana w formacie base64, format kodowania.Domyślnie jeśli nie określono opcji BINARY BASE64, trybie AUTO obsługuje kodowanie adresów URL danych binarnych.Oznacza to zamiast danych binarnych, zwracana jest odwołaniem względnym adresem URL do wirtualnego katalogu głównego z bazy danych, w której wykonano kwerendę.To odwołanie może służyć do dostępu do rzeczywistych danych binarnych w następnych operacjach za pomocą kwerendy dbobject SQLXML ISAPI.Kwerenda musi dostarczyć wystarczająco dużo informacji, takich jak kolumny klucz podstawowy, aby zidentyfikować obrazu.

Określając kwerendy, jeśli używany jest alias do kolumna binarną widoku, alias jest zwracany w adresie URL kodowania danych binarnych.W następnych operacjach alias jest pozbawione sensu, a kodowanie adresów URL nie może być używany do pobierania obrazu.Dlatego nie należy używać aliasów podczas badania trybie AUTO XML dla widoku.

Na przykład w SELECT kwerendy rzutowanie dowolnej kolumna do duży obiekt binarny (BLOB) umożliwia tymczasowe podmiot, utraci ona nazwy skojarzonej tabela i nazwy kolumna.Powoduje to, że kwerendy trybu AUTO wygenerować błąd, ponieważ nie będzie wiadomo gdzie umieścić tę wartość w hierarchii XML.Na przykład:

CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7)

Ta kwerenda generuje błąd, z powodu rzutowania do duży obiekt binarny (BLOB):

SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO

Rozwiązaniem jest dodanie opcji BINARY BASE64 klauzula FOR XML.Jeśli usuniesz rzutowania kwerendy daje wyniki zgodnie z oczekiwaniami:

SELECT Col1,
Col2
FROM MyTable
FOR XML AUTO

Oto wynik:

<MyTable Col1="1" Col2="dbobject/MyTable[@Col1='1']/@Col2" />

See Also

Reference