我們在CLR過程中有一個內存中的DataTable。在處理大量數據之後,我們需要將大量數據加載到數據庫的表中。不幸的是,由於我們使用的是context connection SqlBulkCopy不起作用(拋出錯誤:請求的操作在上下文連接outline of context restrictions上不可用)。來自DataTable的SQL CLR SqlBulkCopy
我們正在考慮建立一個額外的常規連接並使用它來執行SQLBulkCopy。考慮到使用regular connection over a context connection的開銷,這似乎相當愚蠢。我們已經考慮過迭代DataTable中的行併爲每個行插入記錄,但它的大小很大,SQLBulkCopy看起來更合適。
我們沒有和DataTable結婚,只是在尋找從CLR過程中將大量數據插入數據庫的最佳方法。關於DataTable的最後一個注意事項是代表底層數據庫表,但不通過DataSet或TableAdapter綁定到表。在CLR程序中這樣做的手段並不明顯。這樣做並使用AcceptChanges或Update方法將是一個可接受的解決方案。
真的,DataTable僅僅是一個方便的對象,用於在重要處理之後存儲記錄。也就是說,將原始DataTable發送到SqlBulkCopy以進行記錄插入的能力似乎是一次扣籃,直到我們遇到了連接類型的問題。對此我越想越多,我傾向於同意打開常規聯繫可能是一條路。 – ahsteele 2009-04-23 06:16:24