我傳遞一個不是Temptable我SQLCLR代碼與下面的模式列映射在SQLCLR到SQL表XML列
- 架構的臨時表
CREATE TABLE ##temp_table_configurationXml_local (
[OrchConfigXML] [xml]
)
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.
}
當執行SQL腳本和調試SQLCLR代碼我得到了C#/ SQLCLR一個錯誤。
The given ColumnMapping does not match up with any column in the source or destination.
如何將SQLXML映射到SQL XML數據類型。
'destTable'中有多少列?如果只有1,那麼你首先不需要'SqlBulkCopyColumnMapping'。另外,我不記得了,但是使用列名作爲映射_might_區分大小寫,並且在定義列時有「** O ** rchConfigXML」,但在列中有「** o ** rchConfigXML」映射。另外,我看到'dt'創建的地方,但不是'dataTableToUse'。另外,你最終想做什麼,爲什麼你使用'SqlBulkCopy'? –
是的,它是區分大小寫的。我已將名稱更新爲OrchConfigXML,現在出現以下錯誤 無法將類型爲「System.Data.SqlTypes.SqlXml」的對象轉換爲鍵入'System.String – Abe
1)destTable中只有一列。 2)本專欄中的文本將是XML,並且可能很大,所以使用SQLBulkCopy,有什麼替代方法?我很高興修改我的代碼 3)我更新了我的代碼在我的問題中,我有幾個方法,但爲了簡單起見,我在我的問題中合併了代碼。 – Abe