È possibile connettersi a un LocalDB di SQL Server utilizzando JDBC? It appears that (a partire da dic 2011) non è stato possibile.Connessione a SQL Server LocalDB tramite JDBC
Sei a conoscenza di una soluzione alternativa o di un cambio di stato?
È possibile connettersi a un LocalDB di SQL Server utilizzando JDBC? It appears that (a partire da dic 2011) non è stato possibile.Connessione a SQL Server LocalDB tramite JDBC
Sei a conoscenza di una soluzione alternativa o di un cambio di stato?
È possibile connettersi a un SQL Server LocalDB utilizzando JDBC?
Non con il driver JDBC di Microsoft.
Il driver JDBC jTDS supporta pipe denominate.
Esecuzione di informazioni SqlLocalDB.exe MyInstance consente di ottenere (insieme ad altre informazioni) il nome della pipe dell'istanza come "np: \. \ Pipe \ LOCALDB # F365A78E \ tsql \ query".
Sei a conoscenza di una soluzione alternativa o di un cambio di stato?
Possibili soluzioni alternative utilizzano driver JDBC alternativi o passaggio a SQL Server 2012 Express anziché LocalDB.
Dettagli:
Il driver JDBC Microsoft non è compatibile con LocalDB.
"Purtroppo, il Driver Microsoft JDBC non supporta la connessione a LocalDB. Questo accade perché LocalDB supporta solo connessioni Named Pipe e la nostra implementazione JDBC corrente non supporta named pipe. Una possibile lavoro in giro per gli sviluppatori è quello di scaricare e installare SQL Express, che abilita il suo supporto TCP/IP. "
Luiz Fernando Santos (MSFT) July 06, 2012
"Purtroppo driver JDBC non supporta LocalDB in questo momento e non v'è alcuna soluzione facile. La squadra è consapevole di questa caratteristica mancante, ma il deposito di un elemento di connessione è sempre utile per il monitoraggio e la prioritizzazione DCR ".
Krzysztof Kozielczyk - MSFT 22 Dec 2011
"Usi SQL Server Express oggi per lo sviluppo locale? Sei a lavorare su Windows o un'altra piattaforma? Sarebbe bello sentire di più su come si desidera utilizzare LocalDB con la tua applicazione Java. "
Grazie per aver trovato il tempo di postare. Avevo chiesto al mio DBA questa stessa domanda. A sua volta lo ha posato sul forum MSDN e ottenuto una risposta da Luiz Fernando Santos. La stessa risposta che hai gentilmente citato! :-) –
Abbastanza giusto. Ho completato la risposta con possibili soluzioni alternative. –
Sì, è possibile.
La stringa di connessione per un'istanza LocalDB utilizzando jTDS assomiglia a questo:
jdbc:jtds:sqlserver://./DatabaseName;instance=LOCALDB#88893A09;namedPipe=true
Questo funziona come di jTDS 1.3.2.È possibile scaricare una versione qui:
https://github.com/milesibastos/jTDS/releases/download/v1.3.2/jtds-1.3.2-dist.zip
Per trovare la named pipe per il vostro LocalDB desiderato, eseguire
SqlLocalDb info NameOfTheLocalDBInstance
che vi darà qualcosa di simile np:\\.\pipe\LOCALDB#88893A09\tsql\query
Probabilmente la cosa migliore per la connessione con un nome utente/password specifici, quindi crea un login e un utente per il tuo database anche in quell'istanza LocalDB (se non lo hai già fatto):
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
Queste sono ottime istruzioni, tuttavia ho dovuto eliminare il nome del database dalla stringa di connessione (poiché stiamo utilizzando il database master) e utilizzare invece le credenziali di rete: jdbc: jtds: sqlserver: //./; instance = LOCALDB # 111111; namedPipe = true; domain = MY_DOMAIN –
E se CREATE DATABASE SomeDB dopo la connessione da sqlcmd, usiamo: jdbc: jtds: sqlserver: //./SomeDB; instance = LOCALDB # 111111; namedPipe = true; domain = MY_DOMAIN –
... infine, un jar JTDS 1.3.2 può essere trovato in dist zip su github: https://github.com/milesibastos/jTDS/releases –
Ho effettuato la mia ricerca oggi per impostare la connessione utilizzando jTDS e named pipe.
Lo stato oggi è: IMPOSSIBILE! Non è possibile costruire la stringa di connessione su localDB utilizzando jTDS a causa delle limitazioni del nome del pipe. Vedere questione aperta qui: http://sourceforge.net/p/jtds/bugs/716/
Come accennato LocalDB non supportato altro collegamento ma NamedPipes, così sembra che missione impossibile finora ...
rgds
Edit: Come accennato nel commento c'è una patch in questione collegata sopra e puoi usarla per risolvere il problema. Scusa, non posso controllarlo da solo.
Habe un'occhiata al tutorial come farlo dagli IDE basati su IntelliJ https://blog.jetbrains.com/datagrip/2016/10/07/connecting-datagrip-to-sql-server-express-localdb/ – moscas