Étant donné un document XML qui ressemble à ceci ici:SQL Server 2005 Insérez les données xml parent/enfant
<parentRecords>
<parentRecord field1="foo" field2="bar">
<childRecord field1="test" field2="text" />
<childRecord field1="test2" field2="text2" />
</parentRecord>
<parentRecord field1="foo2" field2="bar2">
<childRecord field1="test3" field2="text3" />
<childRecord field1="test4" field2="text4" />
</parentRecord>
</parentRecords>
Quelle serait la plus rapide dans SQL Server 2005 pour passer ce document dans une procédure stockée qui insérerait les enregistrements parent et enfant dans un ensemble de tables, où la table parent a une colonne d'identité et la table enfant fait référence au parent par une clé étrangère? J'utilise ADO.NET et .NET 3.5 avec C#. J'ai la possibilité d'envoyer les données en tant que type de paramètre xml ou type de texte. Je peux utiliser le truc new-fangled sql 2005 XQuery ou le style oldschool SQL 2000 OPENXML. Ou s'il est réellement possible d'accomplir ces insertions en utilisant SqlBulkInsert ou quelque chose comme ça, je suis en panne avec ce qui est le plus rapide (la performance est importante dans cette situation.) Merci pour votre aide!
EDIT:
On dirait que l'insertion fixe parent/enfant est en effet aussi difficile que cela puisse paraître. Je n'étais pas en mesure d'essayer l'apprentissage de LINQ to SQL et d'intégrer ce framework dans mon produit (nous sommes dans un cycle de développement ici!) Et je n'ai pas pu obtenir beaucoup de traction avec l'outil Xml Bulk Insert pourrait être utilisé à cette fin. À la fin, j'ai restructuré les tables pour utiliser les clés primaires GUID sur les deux tables, et j'ai généré les enregistrements complets dans l'API. Ensuite, j'ai été en mesure d'utiliser ADO 2.0 SqlBulkInsert pour envoyer les données à haute vitesse. Réponse donnée à Daniel Miller parce que SQL Server Bulk Load a eu les meilleures chances de succès sans ré-architecturer complètement mon application.
Cela ressemble vraiment à ce que je cherche! Existe-t-il un moyen de configurer le fichier de schéma pour la relation parent/enfant, de sorte que les lignes enfant obtiennent la clé étrangère de leur parent? –
Désolé, je l'ai seulement trouvé, je ne l'ai jamais vraiment utilisé! –