2011-01-26 33 views
6

Tôi đang cố gắng kết nối với cơ sở dữ liệu cục bộ (SQL Server 2008) từ Java. Tôi đã tắt kết nối tcp theo yêu cầu của khách hàng và tôi không thể kết nối. Tôi phải vô hiệu hóa quá trình dịch vụ SQL Server Browser.Kết nối với SQL Server từ java với TCP bị vô hiệu hóa

tôi viết câu lệnh tiếp theo trong Java:

conexion = DriverManager.getConnection("jdbc:sqlserver://localhost\\SQLEXPRESS;user=user;password=password"); 

và tôi có các lỗi sau:

"java.net.SocketTimeoutException: Receive timed out". (then it tells me that probably there is a firewall and that I should run the SQL Server Browser).

Nếu tôi cố gắng kết nối từ Microsoft SQL Server Managment Studio và tôi có thể kết nối whith các thông số tương tự:

Server type: Database Engine 
Server name: localhost\SQLEXPRESS 
Authentication: SQL Server Authentication 
User: user 
Password: password 

Tôi không biết nếu tôi đang làm điều gì đó sai i Java nhưng SQ L Server Managment Studio thực sự là một khách hàng, vì vậy nếu nó có thể kết nối bất kỳ khách hàng nào có thể.

Vui lòng trả lời. Nếu bạn cần thêm thông tin, hãy yêu cầu.

Trả lời

5

Thật không may, trình điều khiển JDBC của Microsoft không hỗ trợ các kết nối đường ống được đặt tên cho SQLServer. Bạn có thể thử tìm và thay thế trình điều khiển JDBC để sử dụng.

Hãy xem jTDS. Đó là mã nguồn mở miễn phí và nó kết nối với SQLServer bằng cách sử dụng các đường ống có tên.

+0

Xin chào. Cảm ơn bạn đã trả lời. Tôi sẽ thử với jTDS, nhưng tôi đã đặt tên là piper bị vô hiệu hóa quá, tôi muốn sử dụng Shared Memory. Tôi shure nó có thể được thực hiện bởi vì khách hàng của tôi có thể kết nối từ .net đến cùng một cơ sở dữ liệu với cùng một cấu hình.Tôi sẽ thử jTDS nhưng tôi nghĩ rất buồn khi trình điều khiển Microsoft không có tất cả các tính năng. – user589155

+0

Đây là ví dụ về jtds: http://stackoverflow.com/questions/11345746/connecting-to-sql-server-localdb-using-jdbc/24412037#24412037 – Vadzim

1

Tôi cho rằng bạn đang sử dụng phiên bản SQL Server Express đi kèm với Visual Studio 2010. Đối với các phiên bản khác nên có các giải pháp tương tự nhưng tôi chưa thử nghiệm. Đây là giải pháp:

  1. Bật giao thức TCP/IP. Tìm "Trình quản lý cấu hình SQL Server" từ trình đơn bắt đầu, mở rộng "Cấu hình mạng SQL Server" và nhấp vào "Giao thức cho SQLEXPRESS", nhấp đúp "TCP/IP" và thay đổi thuộc tính "Đã bật" thành "Có". Kiểm tra tab "Địa chỉ IP" và bật các địa chỉ IP bạn muốn sử dụng (thường là "127.0.0.1").

  2. Bật người dùng trong SQL Server. Nhấn Win + R, gõ vào "-S sqlcmd \ SQLEXPRESS" và chạy các lệnh sau:

    ALTER LOGIN sa ENABLE; 
    GO 
    ALTER LOGIN sa WITH PASSWORD='StrongPassword1!' 
    GO 
    
  3. Thay đổi chế độ đăng nhập để cho phép đăng nhập rõ ràng. Nhấn Win + R một lần nữa và gõ "regedit", tìm chìa khóa sau

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQLServer 
    

    và sau đó thay đổi giá trị "LoginMode" để 2.

  4. Kiểm tra cấu hình. Tạo kết nối thử nghiệm trong Visual Studio 2010, sử dụng tên người dùng "sa" và mật khẩu "StrongPassword1!". nếu bạn có thể kết nối, bạn cũng có thể kết nối thông qua JDBC.

Các vấn đề liên quan