Condividi tramite


Sql Server XML Bulk Load Object Model (SQLXML 4.0)

Il modello a oggetti Microsoft SQL Server XML Bulk Load è costituito dall'oggetto SQLXMLBulkLoad. Questo oggetto supporta i metodi e le proprietà seguenti.

Metodi

Eseguire
Il caricamento bulk dei dati viene eseguito usando il file di schema e il file di dati (o flusso) forniti come parametri.

Proprietà

BulkLoad
Specifica se deve essere eseguito un caricamento bulk. Questa proprietà è utile se si desidera generare solo gli schemi (vedere le proprietà SchemaGen, SGDropTables e SGUseID che seguono) e non eseguire un caricamento bulk. Si tratta di una proprietà booleana. Quando la proprietà è impostata su TRUE, viene eseguito il caricamento bulk XML. Quando è impostato su FALSE, il caricamento bulk XML non viene eseguito.

Il valore predefinito è TRUE.

CheckConstraints
Specifica se i vincoli, ad esempio vincoli dovuti alla relazione chiave primaria/chiave esterna tra le colonne, specificati nella colonna devono essere controllati quando il caricamento bulk XML inserisce i dati nelle colonne. Si tratta di una proprietà booleana.

Quando la proprietà è impostata su TRUE, il caricamento bulk XML controlla i vincoli per ogni valore inserito( il che significa che una violazione del vincolo genera un errore).

Annotazioni

Per lasciare false questa proprietà, è necessario disporre delle autorizzazioni ALTER TABLE per le tabelle di destinazione. Per altre informazioni, vedere ALTER TABLE (Transact-SQL).

Il valore predefinito è FALSE. Quando è impostata su FALSE, il caricamento bulk XML ignora i vincoli durante un'operazione di inserimento. Nell'implementazione corrente è necessario definire le tabelle nell'ordine delle relazioni tra chiave primaria e chiave esterna nello schema di mapping. Ovvero, una tabella con una chiave primaria deve essere definita prima della tabella corrispondente con la chiave esterna; in caso contrario, il caricamento bulk XML ha esito negativo.

Si noti che se viene eseguita la propagazione dell'ID, questa opzione non si applica e il controllo dei vincoli verrà lasciato attivo. Ciò si verifica quando KeepIdentity=False e c'è una relazione definita in cui l'elemento padre è un campo identity e il valore viene assegnato all'elemento figlio durante la generazione.

ConnectionCommand
Identifica un oggetto connessione esistente (ad esempio, l'oggetto comando ADO o ICommand) che deve essere utilizzato dal caricamento bulk XML. È possibile utilizzare la proprietà ConnectionCommand anziché specificare una stringa di connessione con la proprietà ConnectionString. La proprietà Transaction deve essere impostata su TRUE se si utilizza ConnectionCommand.

Se si utilizzano entrambe le proprietà ConnectionString e ConnectionCommand, il caricamento bulk XML utilizza l'ultima proprietà specificata.

Il valore predefinito è NULL.

ConnectionString
Identifica la stringa di connessione OLE DB che fornisce le informazioni necessarie per stabilire una connessione a un'istanza del database. Se si utilizzano entrambe le proprietà ConnectionString e ConnectionCommand, il caricamento bulk XML utilizza l'ultima proprietà specificata.

Il valore predefinito è NULL.

ErrorLogFile
Specifica il nome del file in cui il caricamento bulk XML registra gli errori e i messaggi. Il valore predefinito è una stringa vuota, nel qual caso non viene eseguita alcuna registrazione.

FireTriggers
Specifica se i trigger definiti nelle tabelle di destinazione devono essere attivati durante l'operazione di caricamento bulk. Il valore predefinito è FALSE.

Se impostato su TRUE, i trigger vengono attivati come di consueto durante le operazioni di inserimento.

Annotazioni

Per lasciare false questa proprietà, è necessario disporre delle autorizzazioni ALTER TABLE per le tabelle di destinazione. Per altre informazioni, vedere ALTER TABLE (Transact-SQL).

Si noti che se viene eseguita la propagazione dell'ID, questa opzione non si applica e i trigger verranno lasciati su . Ciò si verifica quando KeepIdentity=False e c'è una relazione definita in cui l'elemento padre è un campo identity e il valore viene assegnato all'elemento figlio durante la generazione.

ForceTableLock
Specifica se le tabelle in cui il caricamento bulk XML copia i dati devono essere bloccati per la durata del caricamento bulk. Si tratta di una proprietà booleana. Quando la proprietà è impostata su TRUE, il caricamento bulk XML acquisisce blocchi di tabella per la durata del caricamento bulk. Quando è impostata su FALSE, il caricamento bulk XML acquisisce un blocco di tabella ogni volta che inserisce un record in una tabella.

Il valore predefinito è FALSE.

IgnoreDuplicateKeys
Specifica le operazioni da eseguire se viene effettuato un tentativo di inserimento di valori duplicati in una colonna chiave. Se questa proprietà è impostata su TRUE e viene effettuato un tentativo di inserimento di un record con un valore duplicato in una colonna chiave, SQL Server non inserisce tale record. Ma inserisce il record successivo; pertanto, l'operazione di caricamento bulk non ha esito negativo. Se questa proprietà è impostata su FALSE, il caricamento bulk ha esito negativo quando viene effettuato un tentativo di inserimento di un valore duplicato in una colonna chiave.

Quando la proprietà IgnoreDuplicateKeys è impostata su TRUE, viene eseguita un'istruzione COMMIT per ogni record inserito nella tabella. Ciò rallenta le prestazioni. La proprietà può essere impostata su TRUE solo quando la proprietà Transaction è impostata su FALSE, perché il comportamento transazionale viene implementato tramite file.

Il valore predefinito è FALSE.

KeepIdentity
Specifica come gestire i valori per una colonna tipo Identity nel file di origine. Si tratta di una proprietà booleana. Quando la proprietà è impostata su TRUE, il caricamento bulk XML assegna i valori specificati nel file di origine alla colonna Identity. Quando la proprietà è impostata su FALSE, l'operazione di caricamento bulk ignora i valori identity-column specificati nell'origine. In questo caso, SQL Server assegna un valore alla colonna Identity.

Se il caricamento bulk prevede una colonna che rappresenta una chiave esterna che fa riferimento a una colonna Identity in cui vengono archiviati i valori generati da SQL Server, il caricamento bulk propaga in modo appropriato questi valori Identity alla colonna chiave esterna.

Il valore di questa proprietà si applica a tutte le colonne coinvolte nel caricamento bulk. Il valore predefinito è TRUE.

Annotazioni

Per lasciare questa proprietà impostata su TRUE, è necessario disporre delle autorizzazioni ALTER TABLE per le tabelle di destinazione. In caso contrario, deve essere impostato su un valore FALSE. Per altre informazioni, vedere ALTER TABLE (Transact-SQL).

KeepNulls
Specifica il valore da utilizzare per una colonna che manca un attributo o un elemento figlio corrispondente nel documento XML. Si tratta di una proprietà booleana. Quando la proprietà è impostata su TRUE, il caricamento bulk XML assegna un valore Null alla colonna. Non assegna il valore predefinito della colonna, se presente, come impostato nel server. Il valore di questa proprietà si applica a tutte le colonne coinvolte nel caricamento bulk.

Il valore predefinito è FALSE.

SchemaGen
Specifica se creare le tabelle necessarie prima di eseguire un'operazione di caricamento bulk. Si tratta di una proprietà booleana. Se questa proprietà è impostata su TRUE, vengono create le tabelle identificate nello schema di mapping (il database deve esistere). Se una o più tabelle esistono già nel database, la proprietà SGDropTables determina se queste tabelle preesistenti devono essere eliminate e ricreate.

Il valore predefinito per la proprietà SchemaGen è FALSE. SchemaGen non crea vincoli PRIMARY KEY nelle tabelle appena create. SchemaGen, tuttavia, crea vincoli FOREIGN KEY nel database se riesce a trovare annotazioni e sql:key-fields corrispondenza sql:relationship nello schema di mapping e se il campo chiave è costituito da una singola colonna.

Si noti che se si imposta la proprietà SchemaGen su TRUE, il caricamento bulk XML esegue le operazioni seguenti:

  • Crea le tabelle necessarie dai nomi degli elementi e degli attributi. È quindi importante non usare parole riservate di SQL Server per i nomi di elementi e attributi nello schema.

  • Restituisce i dati di overflow per qualsiasi colonna designata usando il campo sql:overflow-field nel formato del tipo di dati xml .

SGDropTables
Specifica se le tabelle esistenti devono essere eliminate e ricreate. Questa proprietà viene utilizzata quando la proprietà SchemaGen è impostata su TRUE. Se SGDropTables è FALSE, le tabelle esistenti vengono mantenute. Quando questa proprietà è TRUE, le tabelle esistenti vengono eliminate e ricreate.

Il valore predefinito è FALSE.

SGUseID
Specifica se l'attributo nello schema di mapping identificato come id tipo può essere utilizzato nella creazione di un vincolo PRIMARY KEY quando viene creata la tabella. Utilizzare questa proprietà quando la proprietà SchemaGen è impostata su TRUE. Se SGUseID è TRUE, l'utilità SchemaGen usa un attributo per il quale dt:type="id" viene specificato come colonna chiave primaria e aggiunge il vincolo PRIMARY KEY appropriato durante la creazione della tabella.

Il valore predefinito è FALSE.

TempFilePath
Specifica il percorso del file in cui il caricamento bulk XML crea i file temporanei per un caricamento bulk transazionato. Questa proprietà è utile solo quando la proprietà Transaction è impostata su TRUE. È necessario assicurarsi che l'account di SQL Server usato per il caricamento bulk XML abbia accesso a questo percorso. Se questa proprietà non è impostata, il caricamento bulk XML archivia i file temporanei nel percorso specificato nella variabile di ambiente TEMP.

Transazione
Specifica se il caricamento bulk deve essere eseguito come transazione, nel qual caso il rollback è garantito se il caricamento bulk ha esito negativo. Si tratta di una proprietà booleana. Se la proprietà è impostata su TRUE, il caricamento bulk viene eseguito in un contesto transazionale. La proprietà TempFilePath è utile solo quando Transaction è impostato su TRUE.

Annotazioni

Se si caricano dati binari ,ad esempio bin.hex, i tipi di dati XML bin.base64 nel tipo di dati binario, immagine SQL Server, la proprietà Transaction deve essere impostata su FALSE.

Il valore predefinito è FALSE.

XMLFragment
Specifica se i dati di origine sono un frammento XML. Un frammento XML è un documento XML senza un singolo elemento di primo livello (radice). Si tratta di una proprietà booleana. Questa proprietà deve essere impostata su TRUE se il file di origine è costituito da un frammento XML.

Il valore predefinito è FALSE.