2010-07-21 18 views
11

Qualcuno può fornire una panoramica di questo?Tipo di dati XML del server SQL e QUOTED_IDENTIFIER

Ho sviluppato un processo di importazione utilizzando un tipo di dati XML. Dopo che i dati sono stati inseriti in una tabella dallo sProc di importazione, eseguo altre procedure per aggiornare un'altra tabella con la tabella importata.

La procedura di aggiornamento genera un'eccezione se è stata creata con SET QUOTED_IDENTIFIER OFF. Mi piacerebbe capire perché sta succedendo.

Ecco il codice:

DECLARE @xmlRecords XML 
SET  @xmlRecords = (SELECT importedXML FROM importTable WHERE importId = @lastImportId) 

UPDATE o 
SET  o.ReferralCode = import.refCode 
FROM (
      SELECT records.record.value('(@orderId)[1]', 'INT') AS orderId, 
        records.record.value('(@refCode)[1]', 'VARCHAR(15)') AS refCode 
      FROM @xmlRecords.nodes('/records/record') records(record) 
      ) import 
      INNER JOIN tblOrder o ON import.OrderId = o.orderId 

Sto assumendo che ha a che fare con i tipi di dati citati ('VARCHAR (15)') o gli elementi di percorso di query XML ('/ record/Record').

Grazie per qualsiasi suggerimento è possibile fornire.

risposta

16

Un semplice caso di test

set quoted_identifier off 


DECLARE @xmlRecords XML 
SET  @xmlRecords = '<records><record orderId="1" refCode="1234"></record></records>' 


SELECT records.record.value('(@orderId)[1]', 'INT') AS orderId 
FROM @xmlRecords.nodes('/records/record') records(record) 

Msg 1934, livello 16, stato 1, riga 8 SELEZIONA fallito perché i seguenti opzioni SET dispone di impostazioni non corrette: 'QUOTED_IDENTIFIER '. Verificare che le opzioni SET siano corrette per l'uso con viste indicizzate e/o indici su colonne calcolate e/o query notifiche e/o tipo di dati xml metodi.

questo è documentato nel passare here

Esecuzione XQuery e dati XML istruzioni di modifica richiede che la connessione opzione QUOTED_IDENTIFIER essere ON.

Non ho visto un motivo per cui questo è un requisito per xQuery però.

+0

Grazie mille, Martin. Il messaggio 1934 è esattamente il messaggio che ho ricevuto nel mio scenario. Rivedrò la documentazione. È rassicurante sapere che questo è davvero un comportamento previsto. Grazie ancora. –

Problemi correlati