2012-07-05 52 views
19

Có thể kết nối với SQL Server LocalDB bằng JDBC không? It appears that (tính đến tháng 12 năm 2011) không thể thực hiện được.Kết nối với SQL Server LocalDB bằng cách sử dụng JDBC

Bạn có biết cách giải quyết hoặc thay đổi trạng thái không?

+0

Habe xem xét hướng dẫn cách thực hiện từ IDE dựa trên IntelliJ https://blog.jetbrains.com/datagrip/2016/10/07/connecting-datagrip-to-sql-server-express-localdb/ – moscas

Trả lời

14

Có thể kết nối với SQL Server LocalDB bằng JDBC không?

Không có Trình điều khiển JDBC của Microsoft.

jTDS Trình điều khiển JDBC hỗ trợ các đường ống có tên.

Thực thi thông tin SqlLocalDB.exe MyInstance sẽ giúp bạn (cùng với thông tin khác) tên đường dẫn ví dụ như "np: \. \ Pipe \ LOCALDB # F365A78E \ tsql \ query".

Bạn có biết cách giải quyết hoặc thay đổi trạng thái không?

Cách giải quyết có thể đang sử dụng trình điều khiển JDBC thay thế hoặc chuyển sang SQL Server 2012 Express thay vì LocalDB.

chi tiết:

Microsoft JDBC driver không tương thích với LocalDB.

"Thật không may, Trình điều khiển JDBC của Microsoft không hỗ trợ kết nối với LocalDB. Điều này xảy ra vì LocalDB chỉ hỗ trợ các kết nối có tên Ống và thực thi JDBC hiện tại của chúng tôi không hỗ trợ Đặt tên cho Ống. SQL Express, cho phép hỗ trợ TCP/IP của nó. "

Luiz Fernando Santos (MSFT) July 06, 2012

"Thật không may JDBC tài xế không hỗ trợ LocalDB tại thời điểm này và không có cách giải quyết dễ dàng. Nhóm nghiên cứu nhận thức được tính năng này mất tích, nhưng nộp một mục kết nối luôn luôn là hữu ích cho DCR theo dõi và ưu tiên . "

Krzysztof Kozielczyk - MSFT 22 Dec 2011

"Bạn có sử dụng SQL Server Express hôm nay để phát triển địa phương? Bạn có làm việc trên Windows hay nền tảng khác? Nó sẽ là tuyệt vời để nghe thêm về cách bạn muốn sử dụng LocalDB với ứng dụng Java của bạn. "

Shamitha Reddy, Program Manager Microsoft JDBC Driver for SQL Server, Microsoft JDBC Driver Product Team 13 Apr 2012

+1

Cảm ơn bạn đã dành thời gian đăng bài. Tôi đã hỏi DBA của tôi câu hỏi này rất. Ông lần lượt đặt nó trên diễn đàn MSDN và nhận được một trả lời từ Luiz Fernando Santos. Cùng một câu trả lời mà bạn đã trích dẫn! :-) –

+0

Đủ công bằng. Tôi bổ sung câu trả lời cho các giải pháp có thể. –

17

Có, có thể.

Chuỗi kết nối cho một trường hợp sử dụng LocalDB jTDS trông như thế này:

jdbc:jtds:sqlserver://./DatabaseName;instance=LOCALDB#88893A09;namedPipe=true 

này hoạt động như các jTDS 1.3.2.Bạn có thể tải một thông cáo ở đây:

https://github.com/milesibastos/jTDS/releases/download/v1.3.2/jtds-1.3.2-dist.zip

Để tìm các đường ống đặt tên cho LocalDB mong muốn của bạn, hãy chạy

SqlLocalDb info NameOfTheLocalDBInstance 

mà sẽ cung cấp cho bạn một cái gì đó giống như np:\\.\pipe\LOCALDB#88893A09\tsql\query

Đây có thể là tốt nhất để kết nối với tên người dùng/mật khẩu cụ thể, do đó, hãy tạo thông tin đăng nhập và người dùng cho cơ sở dữ liệu của bạn trong phiên bản LocalDB đó (nếu bạn chưa có):

sqlcmd -S np:\\.\pipe\LOCALDB#88893A09\tsql\query 

CREATE LOGIN dbuser WITH PASSWORD = 'dbpassword' 
GO 
CREATE USER dbuser 
GO 
ALTER AUTHORIZATION ON DATABASE::DatabaseName TO dbuser 
GO 
+0

Đây là những chỉ dẫn tuyệt vời, tuy nhiên tôi phải bỏ tên cơ sở dữ liệu từ chuỗi kết nối (vì chúng tôi đang sử dụng cơ sở dữ liệu chủ) và sử dụng thông tin đăng nhập mạng của tôi thay thế: jdbc: jtds: sqlserver: //./; instance = LOCALDB # 111111; namedPipe = true; domain = MY_DOMAIN –

+3

Và nếu chúng ta TẠO DATABASE SomeDB sau khi kết nối từ sqlcmd, thì chúng ta sử dụng: jdbc: jtds: sqlserver: //./SomeDB; instance = LOCALDB # 111111; namedPipe = true; domain = MY_DOMAIN –

+2

... cuối cùng, một JTDS 1.3.2 jar có thể được tìm thấy trong zip dist trên github: https://github.com/milesibastos/jTDS/releases –

0

Tôi đã nghiên cứu hôm nay để thiết lập kết nối bằng cách sử dụng jTDS và các đường ống có tên.

Trạng thái hiện tại là: KHÔNG THỂ! Không thể xây dựng chuỗi kết nối tới localDB bằng cách sử dụng jTDS do giới hạn tên đường ống của nó. Thấy vấn đề mở ở đây: http://sourceforge.net/p/jtds/bugs/716/

Như đã đề cập localDB không hỗ trợ kết nối khác nhưng namedPipes, vì vậy nó trông giống như nhiệm vụ bất khả cho đến nay ...

Rgds

Edit: Như đã đề cập trong nhận xét có bản vá trong vấn đề được liên kết ở trên và bạn có thể sử dụng điều này để khắc phục sự cố. Xin lỗi tôi không thể tự kiểm tra điều này.

+0

Tôi vừa thành công với câu trả lời của bonh. Vì vậy, nó ít nhất có thể để có được một kết nối. –

+1

Lỗi mà bạn liên kết đến có một bản vá đính kèm mà cố ý khắc phục giới hạn. – twm

+1

Tôi vừa thử bản vá và nó đã làm việc cho tôi. – twm

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