2012-06-27 14 views
7

इम जबकि जावा कोड से एमएस एसक्यूएल सर्वर 2008 से कनेक्ट करने के लिए हो रहीएमएस एसक्यूएल सर्वर और JDBC: कनेक्शन

I/O Error: DB server closed connection.

बंद कर दिया।


एसक्यूएल सर्वर मिश्रित मोड में है और स्थानीय machine.My कनेक्शन स्ट्रिंग में अपनी jTDS

jdbc:jtds:sqlserver://machineName:1433;databaseName=DB;integratedSecurity=true


स्टैक ट्रेस

java.sql.SQLException: I/O Error: DB server closed connection. at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2311) at net.sourceforge.jtds.jdbc.TdsCore.login(TdsCore.java:610) at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:345) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3.java:50) at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.app.hibernate.test.(test.java:22) at com.app.hibernate.test.main(test.java:53) Caused by: java.io.IOException: DB server closed connection. at net.sourceforge.jtds.jdbc.SharedSocket.readPacket(SharedSocket.java:848) at net.sourceforge.jtds.jdbc.SharedSocket.getNetPacket(SharedSocket.java:727) at net.sourceforge.jtds.jdbc.ResponseStream.getPacket(ResponseStream.java:466) at net.sourceforge.jtds.jdbc.ResponseStream.read(ResponseStream.java:103) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2206) ... 8 more Exception in thread "main" java.lang.NullPointerException at com.app.hibernate.test.db(test.java:36) at com.app.hibernate.test.main(test.java:54)

JDBC ड्राइवर है

String url ="jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db";

स्टैकट्रेस

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'username'. at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156) at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:240) at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:78) at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2636) at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2046) at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41) at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2034) at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003) at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1207) at com.microsoft.sqlserver.jdbc.SQLServerConnection.loginWithoutFailover(SQLServerConnection.java:1054) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:758) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.app.hibernate.test.(test.java:22) at com.app.hibernate.test.main(test.java:53) Exception in thread "main" java.lang.NullPointerException at com.app.hibernate.test.db(test.java:36) at com.app.hibernate.test.main(test.java:54)

+1

क्या आप यहां स्टैकट्र्रेस पेस्ट कर सकते हैं? –

+1

एक सर्वर कॉन्फ़िगरेशन समस्या हो सकती है ... – hovanessyan

+0

मैंने प्रश्न – Mukthi

उत्तर

2

है कि आपका कनेक्शन तार में समस्या है

jTDS के लिए:

JDBC: jtds: sqlserver: // machineName: 1433; DatabaseName = डीबी; useNTLMv2 = ट्रू ई; डोमेन = कार्यसमूह

आप NTLM काम करने के लिए आवश्यक पुस्तकालय एकल साइन-ऑन के लिए http://jtds.sourceforge.net/faq.html#windowsAuth पढ़ सकते हैं। sqlserver:: // मशीन:

"integratedSecurity = सच" है कि आप jdts के लिए आपूर्ति की वैध जब JDBC ड्राइवर

JDBC उपयोग कर रहा है, उदाहरण के = SQLEXPRESS; DatabaseName = db 1433; एकीकृत सुरक्षा = सही

+0

मैंने यूआरएल दोनों का उपयोग किया लेकिन SQL सर्वर ड्राइव में रहते हुए ** लॉगिन द्वारा अनुरोध किया गया डेटाबेस "डीबी" नहीं खोल सकता। लॉगिन विफल रहा। ** जबकि jtds ** USENTLMV2 कनेक्शन प्रॉपर्टी अमान्य है। ** – Mukthi

+0

यदि आईएम सेटिंग ** useNTLMv2 = false ** उन्हें एक ही लॉगिन मिल रहा है त्रुटि विफल रही है। – Mukthi

+0

लेकिन मैं डीबी – Mukthi

0

आपके पास एमएस एसक्यूएल पक्ष में प्रमाणीकरण त्रुटि है।

आप नहीं कैसे कनेक्शन adquire करने (यानी, आप एक डेटा स्रोत या एक कनेक्शन पूल का उपयोग कर रहे) के नियंत्रण में, कनेक्शन यूआरएल लॉगिन और पासवर्ड शामिल होना चाहिए, की तरह इस्तेमाल किया जा करने के लिए कर रहे हैं:

jdbc:sqlserver://machine:1433;instance=SQLEXPRESS;databaseName=db;user=USERNAME;password=PASSWORD"; 

यदि एप्लिकेशन विंडोज मशीन पर चल रहा है और आप लॉग इन उपयोगकर्ता के क्रेडेंशियल्स का उपयोग करना चाहते हैं, तो आप useNTLMv2 के साथ या बिना domain पैरामीटर निर्दिष्ट कर सकते हैं।

अंत में, यदि आप एक विंडोज़ मशीन पर हैं, लेकिन आप एक डोमेन के खिलाफ उपयोगकर्ता को प्रमाणित करना चाहते हैं, तो आप उपयोगकर्ता नाम, पासवर्ड और डोमेन पैरामीटर की आपूर्ति करनी होगी। आप jtds FAQ में विशेष रूप से URL Format अनुभाग में इसके बारे में सब कुछ पढ़ सकते हैं।

3

आपका कनेक्शन स्ट्रिंग और प्रमाणीकरण में त्रुटियां हैं।जनक-पीसी एसक्यूएल उपयोगकर्ता नाम : सा एसक्यूएल पासवर्ड
: 1234 डाटाबेस : अगर यह मिश्रण मोड है का उपयोग नहीं करते एसक्यूएल प्रमाणीकरण

इस

पीसी नाम प्रयास करें Janak_DB

JDBC में

०१२३५१६४१०६ एसक्यूएल conncetion के लिए कोड

कक्षा .forName ("com.microsoft.sqlserver.jdbc.SQLServerDriver");
कनेक्शन conn = DriverManager.getConnection ("jdbc: sqlserver: // janaka-PC; उपयोगकर्ता = sa; पासवर्ड = 1234; डेटाबेस = Janak_DB");

संबंधित मुद्दे