2012-01-03 106 views
1

我正在使用VB.Net(4.0)中的桌面應用程序 會有很多包含大量插入查詢的SQL腳本。 Currenlty我們正在運行使用SMO(http://msdn.microsoft.com/en-us/library/ms162557.aspx)腳本在SQL Server 2008中使用.Net批量複製或表值參數的性能比較批量插入

一種方式

出於性能考慮,我們有計劃更改SQL腳本到XML文件(而不是插入查詢,它將具有 xml數據與正確的xsd定義)。 將xml加載到dataSet並使用SQL批量複製我們試圖插入到SQL Server。

方式二

荷載XML爲DataSet 創建基於在數據集中(從XML文件creted)的數據表的用戶定義的表型,並創建具有參數作爲該表型的存儲過程。在該sp中,它將包含 插入表名 select * from tablevalueparameter。

所以請建議我以最好和適合的方式。提前致謝。

+0

[性能bcp/BULK INSERT與表值參數](http://stackoverflow.com/questions/2149897/performance-of-bcp-bulk-insert-vs-table-valued-parameters )或http://stackoverflow.com/q/8618261/27535或 – gbn 2012-01-03 14:35:10

回答

1

不科學的答案...

  • SqlBulkCopy的使用被優化
  • 表值參數的作用就像 「正常」 的SQL

的TVP方法不同的API將同一順序的運行單獨的INSERT語句,我希望它比SQLBulkCopy慢。

但是,我期望每種技術都取決於您有多少行:對於1000或10k +每批我會不考慮使用SQLBulkCopy,因爲我不需要存儲過程。

+0

雖然不科學,我喜歡這個答案。 – 2016-04-15 20:04:39