Partager via


Modèle d'objet de chargement massif XML de SQL Server (SQLXML 4.0)

Le modèle objet Microsoft SQL Server XML Bulk Load se compose de l’objet SQLXMLBulkLoad. Cet objet prend en charge les méthodes et propriétés suivantes.

Méthodes

Exécuter
Charge en bloc les données à l’aide du fichier de schéma et du fichier de données (ou du flux) fournis en tant que paramètres.

Propriétés

BulkLoad
Spécifie si une charge en bloc doit être effectuée. Cette propriété est utile si vous souhaitez générer uniquement les schémas (consultez les propriétés SchemaGen, SGDropTables et SGUseID qui suivent) et n’effectuez pas de chargement en bloc. Il s’agit d’une propriété booléenne. Lorsque la propriété a la valeur TRUE, le chargement en masse XML s’exécute. Lorsqu’il est défini sur FALSE, le chargement en bloc XML n’est pas exécuté.

La valeur par défaut est TRUE.

CheckConstraints
Spécifie si les contraintes (telles que les contraintes en raison de la relation clé primaire/clé étrangère entre les colonnes) spécifiées sur la colonne doivent être vérifiées lorsque le chargement en masse XML insère des données dans les colonnes. Il s’agit d’une propriété booléenne.

Lorsque la propriété a la valeur TRUE, le chargement en masse XML vérifie les contraintes de chaque valeur insérée (ce qui signifie qu’une violation de contrainte entraîne une erreur).

Remarque

Pour laisser cette propriété comme FALSE, vous devez disposer des autorisations ALTER TABLE sur les tables cibles. Pour plus d’informations, consultez ALTER TABLE (Transact-SQL).

La valeur par défaut est FALSE. Lorsqu’il est défini sur FALSE, le chargement en masse XML ignore les contraintes pendant une opération d’insertion. Dans l’implémentation actuelle, vous devez définir les tables dans l’ordre des relations de clé primaire et de clé étrangère dans le schéma de mappage. Autrement dit, une table avec une clé primaire doit être définie avant la table correspondante avec la clé étrangère ; sinon, le chargement en masse XML échoue.

Notez que si la propagation de l’ID est effectuée, cette option ne s’applique pas et la vérification des contraintes reste activée. Cela se produit lorsqu’il KeepIdentity=False existe une relation définie où le parent est un champ d’identité et que la valeur est donnée à l’enfant lorsqu’il est généré.

ConnectionCommand
Identifie un objet de connexion existant (par exemple, l’objet de commande ADO ou ICommand) que le chargement en masse XML doit utiliser. Vous pouvez utiliser la propriété ConnectionCommand au lieu de spécifier une chaîne de connexion avec la propriété ConnectionString. La propriété Transaction doit être définie sur TRUE si vous utilisez ConnectionCommand.

Si vous utilisez les propriétés ConnectionString et ConnectionCommand, le chargement en bloc XML utilise la dernière propriété spécifiée.

La valeur par défaut est NULL.

ConnectionString
Identifie la chaîne de connexion OLE DB qui fournit les informations nécessaires pour établir une connexion à une instance de la base de données. Si vous utilisez les propriétés ConnectionString et ConnectionCommand, le chargement en bloc XML utilise la dernière propriété spécifiée.

La valeur par défaut est NULL.

ErrorLogFile
Spécifie le nom de fichier dans lequel le chargement en masse XML enregistre les erreurs et les messages. La valeur par défaut est une chaîne vide, auquel cas aucune journalisation n’a lieu.

FireTriggers
Spécifie si les déclencheurs définis sur les tables cibles doivent être déclenchés pendant l’opération de chargement en masse. La valeur par défaut est FALSE.

Lorsqu’il est défini sur TRUE, les déclencheurs sont déclenchés conformément à la normale pendant les opérations d’insertion.

Remarque

Pour laisser cette propriété comme FALSE, vous devez disposer des autorisations ALTER TABLE sur les tables cibles. Pour plus d’informations, consultez ALTER TABLE (Transact-SQL).

Notez que si la propagation de l’ID est en cours d’exécution, cette option ne s’applique pas et les déclencheurs sont laissés sur. Cela se produit lorsqu’il KeepIdentity=False existe une relation définie où le parent est un champ d’identité et que la valeur est donnée à l’enfant lorsqu’il est généré.

ForceTableLock
Spécifie si les tables dans lesquelles le chargement en masse XML copie les données doivent être verrouillées pendant la durée du chargement en bloc. Il s’agit d’une propriété booléenne. Lorsque la propriété a la valeur TRUE, le chargement en bloc XML acquiert des verrous de table pendant la durée du chargement en bloc. Lorsqu’il est défini sur FALSE, le chargement en masse XML acquiert un verrou de table chaque fois qu’il insère un enregistrement dans une table.

La valeur par défaut est FALSE.

IgnoreDuplicateKeys
Spécifie ce qu’il faut faire si une tentative est effectuée pour insérer des valeurs dupliquées dans une colonne clé. Si cette propriété a la valeur TRUE et qu’une tentative d’insertion d’un enregistrement avec une valeur en double dans une colonne clé, SQL Server n’insère pas cet enregistrement. Mais il insère l’enregistrement suivant ; par conséquent, l’opération de chargement en bloc n’échoue pas. Si cette propriété a la valeur FALSE, le chargement en bloc échoue lorsqu’une tentative d’insertion d’une valeur en double dans une colonne clé est effectuée.

Lorsque la propriété IgnoreDuplicateKeys a la valeur TRUE, une instruction COMMIT est émise pour chaque enregistrement inséré dans la table. Cela ralentit les performances. La propriété peut être définie sur TRUE uniquement lorsque la propriété Transaction a la valeur FALSE, car le comportement transactionnel est implémenté à l’aide de fichiers.

La valeur par défaut est FALSE.

KeepIdentity
Spécifie comment traiter les valeurs d’une colonne de type Identité dans le fichier source. Il s’agit d’une propriété booléenne. Lorsque la propriété a la valeur TRUE, le chargement en masse XML affecte les valeurs spécifiées dans le fichier source à la colonne d’identité. Lorsque la propriété a la valeur FALSE, l’opération de chargement en bloc ignore les valeurs de colonne d’identité spécifiées dans la source. Dans ce cas, SQL Server affecte une valeur à la colonne d’identité.

Si le chargement en bloc implique une colonne qui est une clé étrangère faisant référence à une colonne d’identité dans laquelle les valeurs générées par SQL Server sont stockées, le chargement en bloc propage correctement ces valeurs d’identité à la colonne de clé étrangère.

La valeur de cette propriété s’applique à toutes les colonnes impliquées dans le chargement en bloc. La valeur par défaut est TRUE.

Remarque

Pour laisser cette propriété true, vous devez disposer des autorisations ALTER TABLE sur les tables cibles. Sinon, elle doit être définie sur une valeur false. Pour plus d’informations, consultez ALTER TABLE (Transact-SQL).

KeepNulls
Spécifie la valeur à utiliser pour une colonne qui ne contient pas d’attribut ou d’élément enfant correspondant dans le document XML. Il s’agit d’une propriété booléenne. Lorsque la propriété a la valeur TRUE, le chargement en masse XML affecte une valeur Null à la colonne. Elle n’affecte pas la valeur par défaut de la colonne, le cas échéant, telle qu’elle est définie sur le serveur. La valeur de cette propriété s’applique à toutes les colonnes impliquées dans le chargement en bloc.

La valeur par défaut est FALSE.

SchemaGen
Spécifie s’il faut créer les tables requises avant d’effectuer une opération de chargement en bloc. Il s’agit d’une propriété booléenne. Si cette propriété a la valeur TRUE, les tables identifiées dans le schéma de mappage sont créées (la base de données doit exister). Si une ou plusieurs des tables existent déjà dans la base de données, la propriété SGDropTables détermine si ces tables préexistantes doivent être supprimées et recréées.

La valeur par défaut de la propriété SchemaGen est FALSE. SchemaGen ne crée pas de contraintes PRIMARY KEY sur les tables nouvellement créées. SchemaGen crée toutefois des contraintes FOREIGN KEY dans la base de données si elle peut trouver des correspondances sql:relationship et sql:key-fields des annotations dans le schéma de mappage et si le champ clé se compose d’une seule colonne.

Notez que si vous définissez la propriété SchemaGen sur TRUE, le chargement en masse XML effectue les opérations suivantes :

  • Crée les tables nécessaires à partir des noms d’éléments et d’attributs. Par conséquent, il est important que vous n’utilisiez pas de mots réservés SQL Server pour les noms d’éléments et d’attributs dans le schéma.

  • Retourne des données de dépassement de capacité pour n’importe quelle colonne désignée à l’aide du champ sql :overflow-field au format de type de données xml .

SGDropTables
Spécifie si les tables existantes doivent être supprimées et recréées. Vous utilisez cette propriété lorsque la propriété SchemaGen a la valeur TRUE. Si SGDropTables a la valeur FALSE, les tables existantes sont conservées. Lorsque cette propriété a la valeur TRUE, les tables existantes sont supprimées et recréées.

La valeur par défaut est FALSE.

SGUseID
Spécifie si l’attribut dans le schéma de mappage identifié comme id type peut être utilisé pour créer une contrainte PRIMARY KEY lors de la création de la table. Utilisez cette propriété lorsque la propriété SchemaGen a la valeur TRUE. Si SGUseID a la valeur TRUE, l’utilitaire SchemaGen utilise un attribut pour lequel dt:type="id" il est spécifié comme colonne de clé primaire et ajoute la contrainte PRIMARY KEY appropriée lors de la création de la table.

La valeur par défaut est FALSE.

TempFilePath
Spécifie le chemin d’accès au fichier dans lequel le chargement en bloc XML crée les fichiers temporaires pour une charge en bloc transactionnée. (Cette propriété est utile uniquement lorsque la propriété Transaction a la valeur TRUE.) Vous devez vous assurer que le compte SQL Server utilisé pour le chargement en masse XML a accès à ce chemin. Si cette propriété n’est pas définie, le chargement en masse XML stocke les fichiers temporaires à l’emplacement spécifié dans la variable d’environnement TEMP.

Transaction
Spécifie si le chargement en bloc doit être effectué en tant que transaction, auquel cas la restauration est garantie si le chargement en bloc échoue. Il s’agit d’une propriété booléenne. Si la propriété a la valeur TRUE, le chargement en bloc se produit dans un contexte transactionnel. La propriété TempFilePath est utile uniquement lorsque La transaction a la valeur TRUE.

Remarque

Si vous chargez des données binaires (par exemple, bin.hex, bin.base64 XML types vers les types de données binaires, image SQL Server), la propriété Transaction doit être définie sur FALSE.

La valeur par défaut est FALSE.

XMLFragment
Spécifie si les données sources sont un fragment XML. Un fragment XML est un document XML sans élément de niveau supérieur (racine) unique. Il s’agit d’une propriété booléenne. Cette propriété doit être définie sur TRUE si le fichier source se compose d’un fragment XML.

La valeur par défaut est FALSE.