Je passe dans un TempTable à mon code SQLCLR avec le schéma suivantCorrespondance de colonne de type SqlXml dans SQLCLR à table SQL colonne Xml
- Schéma pour la table temporaire
CREATE TABLE ##temp_table_configurationXml_local (
[OrchConfigXML] [xml]
)
Code SQLCLR:
DataTable dt = new DataTable(tableToUse); // tableToUse is the temp table from SQL
dt.Columns.Add("OrchConfigXML", typeof(SqlXml));
DataRow dr = dt.NewRow();
dr["orchConfigXML"] = xmlToUse; // This is type of SqlXML and has valid XML in it
dataTableToUse.Rows.Add(dr);
// Write Data
// auto-disposable bulk copy operation
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
bulkCopy.DestinationTableName = destTable;
bulkCopy.ColumnMappings.Add(new
SqlBulkCopyColumnMapping("OrchConfigXML", "OrchConfigXML"));
// Bulk copy operation will drain memory so it is better to setup a batchsize.
bulkCopy.BatchSize = 50000;
bulkCopy.WriteToServer(dt);
conn.Close(); //Close the SQL Connection.
}
Pendant l'exécution du script SQL et le débogage du code SQLCLR j'obtiens une erreur en C#/SQLCLR.
The given ColumnMapping does not match up with any column in the source or destination.
Comment mapper un type de données XML SQLXML vers SQL.
Combien de colonnes contiennent 'destTable'? Si seulement 1, alors vous n'avez pas besoin de 'SqlBulkCopyColumnMapping' en premier lieu. Aussi, je ne me souviens pas, mais en utilisant les noms de colonnes pour le mapping _might_ être sensible à la casse, et vous avez "** O ** rchConfigXML" lorsque vous avez défini la colonne, mais "** o ** rchConfigXML" dans la colonne cartographie. De plus, je vois où 'dt' est créé, mais pas' dataTableToUse'. En outre, qu'essayez-vous finalement de faire, et pourquoi utilisez-vous 'SqlBulkCopy'? –
Oui, il était sensible à la casse. J'ai mis à jour le nom à OrchConfigXML et maintenant j'obtiens l'erreur suivante Impossible de lancer l'objet de type 'System.Data.SqlTypes.SqlXml' pour taper 'System.String – Abe
1) Il n'y a qu'une seule colonne dans destTable. 2) Le texte dans cette colonne sera XML et peut être énorme, donc en utilisant SQLBulkCopy, quelle est l'alternative à utiliser?Je suis heureux de modifier mon code 3) J'ai mis à jour mon code dans ma question, j'ai quelques méthodes mais pour la simplicité j'ai fusionné le code dans ma question. – Abe