我將用戶機器上的ADO版本從2.5升級到2.8的時候發現Connection.open明顯慢了很多,連接串如下:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=sqltest於是做了以下測試,使用ADO 2.8時,第一次執行時間如下(使用ADO 2.5時無論何種情況均在1秒以內),第二次執行時間則小於0.01秒文件大小 Exe位置 執行時間(秒)
20K 本地 0.17
20K 網絡盤 0.25
39.7M 本地 0.98
39.7M 網絡盤 9.7 由於Windows XP自帶ADO 2.8 SP1,所以升級是必然的,由於系統較為復雜(大約有500張Form,100多個class),將系統拆分成多個文件短期內也是不可能的事。試過將C:\Winnt\system32\sqlsrv32.dll由版本2000.85.1117.0(ADO 2.8中的版本)降級為3.70.11.46(ADO 2.5中的版本),速度回復正常,但不知有何風險,並且還不能支持多Instance,如同一SQL Server中裝有SQL2000和SQL2005,無法訪問如SQLTEST\SQL2005這一Instance。請各位高手幫幫忙,謝謝!

解决方案 »

  1.   

    ado.net有连接池的,你第二次是直接使用了连接池
      

  2.   

    不是使用ADO.NET,而是VB6舊版本的ADO 2.5。
      

  3.   

    不象是網絡問題,我即使復制一個40M的文件大約也是需要4秒左右,而用較小的EXE文件也很快,估計也不是SQL Server的問題,懷疑是Connection.open的進候會將EXE文件Load進內存,如果是這樣不知是否可以通過參數進行配置?
      

  4.   

    我上星期在微软的远程协助下,试着删掉了Norton Antivirus后,系统运行速度恢复正常。除了删掉杀毒软件外,还有没有其它好的方法呢?