2016-09-06 53 views
-3

有一個Java程序試圖向SQL Server數據庫插入大約150k條記錄,並且在生產服務器上出現以下錯誤。服務器上的套接字錯誤只有

[微軟] [SQLServer 2000的驅動程序JDBC]錯誤建立套接字

開始增加的數據量即插入的次數後看到這些錯誤。 SQL Server連接工作正常。

我試圖通過設置最大連接池如下

String DB_URL= "jdbc:sqlserver://example.com:11111;SelectMethod=Direct;DatabaseName=DB1;Max Pool Size=100000" 

在本地機器上的程序工作正常更改JDBC字符串。這告訴程序沒有錯。

只有當試圖在prod服務器上運行相同的程序是問題。即使在服務器上只有在數據量增加後纔會看到此錯誤。在此之前,即使在服務器上該程序工作正常。

是套接字錯誤主要是網絡問題?需要同樣的幫助請。

這裏是堆棧跟蹤

java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) 
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) 
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source) 
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.getImplConnection(Unknown Source) 
at com.microsoft.jdbc.base.BaseStatement.setupImplConnection(Unknown Source) 
at com.microsoft.jdbc.base.BaseStatement.<init>(Unknown Source) 
at com.microsoft.jdbc.base.BasePreparedStatement.<init>(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source) 
at com.microsoft.jdbc.base.BaseConnection.prepareStatement(Unknown Source) 
+0

有一個堆棧跟蹤。發表它。在你的問題。 – EJP

+0

[Microsoft] [用於JDBC的SQLServer 2000驅動程序]建立套接字時出錯。 我明白了。 – user3761541

+0

這是一條錯誤消息。我詢問了堆棧跟蹤。 – EJP

回答

1

如果你運行了DB服務器的連接(有限制的數據庫服務器的併發連接,請參閱服務器文檔)這種錯誤可能發生會費連接泄漏。你還沒有提出你的代碼,所以很難說,但是,檢查以下內容是值得的:

1)你是否每個機會插入每個連接只有一個記錄,並獲得一個新的連接插入下一個記錄? 2)您是否在插入記錄/(s)後關閉連接?

如果可能的話,用PreparedStatement和addBatch批量插入,看看它有什麼區別。

+0

謝謝,試圖幫助我。我正在進行批量插入和關閉連接。最後找出問題所在並解決了這個問題。該程序正在加載sql server 2000和2008驅動程序。我下載了新的sql服務器驅動程序並僅使用它。之後,該程序運行良好。再次感謝你的幫助。 – user3761541