XML Bulkload 在.NET环境下运行的注意点
导入大量 XML 数据到SQL Server的时候,我们常会用到 XML Bulkload。本人前不久在将VB写的应用程序迁移到ASP.Net的时候遇到了这样一个错误:
接口 SQLXMLBULKLOADLib.ISQLXMLBulkLoad 的 QueryInterface 失败。
程序代码如下:
1 private void Page_Load(object sender, System.EventArgs e)
2 {
3 SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class objXBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class();
4 objXBL.ConnectionString = "Provider=sqloledb;server=(local);database=Digi;uid=sa;pwd=";
5 objXBL.ErrorLogFile = "d:\error.log";
6 objXBL.KeepIdentity = false;
7 objXBL.Execute("d:\\test.xsd", "d:\\test.xml");
8 }
2 {
3 SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class objXBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class();
4 objXBL.ConnectionString = "Provider=sqloledb;server=(local);database=Digi;uid=sa;pwd=";
5 objXBL.ErrorLogFile = "d:\error.log";
6 objXBL.KeepIdentity = false;
7 objXBL.Execute("d:\\test.xsd", "d:\\test.xml");
8 }
开始以为是语法有问题,经调试发现在.Net的Windows应用程序中却运行正常。这才发现原来是Thread的问题。Bulkload能够在VB以及.Net的Windows应用程序下运行正常的原因在于它们默认是以单线程运行的。
于是改写程序:
1 private void Page_Load(object sender, System.EventArgs e)
2 {
3 Thread bulkLoad = new Thread( new ThreadStart(BulkIt) );
4 bulkLoad.ApartmentState = ApartmentState.STA;
5 bulkLoad.Start();
6 }
7
8
9 public void BulkIt()
10 {
11 SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class objXBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class();
12 objXBL.ConnectionString = "Provider=sqloledb;server=(local);database=Digi;uid=sa;pwd=";
13 objXBL.ErrorLogFile = "d:\error.log";
14 objXBL.KeepIdentity = false;
15 objXBL.Execute("d:\\test.xsd", "d:\\test.xml");
16 }
2 {
3 Thread bulkLoad = new Thread( new ThreadStart(BulkIt) );
4 bulkLoad.ApartmentState = ApartmentState.STA;
5 bulkLoad.Start();
6 }
7
8
9 public void BulkIt()
10 {
11 SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class objXBL = new SQLXMLBULKLOADLib.SQLXMLBulkLoad3Class();
12 objXBL.ConnectionString = "Provider=sqloledb;server=(local);database=Digi;uid=sa;pwd=";
13 objXBL.ErrorLogFile = "d:\error.log";
14 objXBL.KeepIdentity = false;
15 objXBL.Execute("d:\\test.xsd", "d:\\test.xml");
16 }
运行正常!当然别忘了在前面加上:
using System.Threading;
posted on 2005-05-18 15:26 ~~John 的网络涂鸦纪实~~ 阅读(630) 评论(0) 编辑 收藏 举报