20

Ho un'applicazione console C# scritta utilizzando Visual Studio 2012. Nell'applicazione sto utilizzando una connessione localdb Sql Server a un database per memorizzare informazioni. Funziona bene su diversi computer, ognuno dei quali ha installato Visual Studio.Non riesco a ottenere una connessione localdb Sql Server per funzionare su un computer su cui non è installato SqlServer Express

Vorrei installare un programma che deve solo installare Sql Server Express LocalDB e non il più grande Sql Server Express. Tuttavia, la mia applicazione non è in esecuzione sui computer di destinazione. Ho installato Sql Server Express LocalDB 2014 su un computer di destinazione. Posso, usando una riga di comando, eseguire comandi usando sqllocaldb per verificare che sia installato e in esecuzione.

C:\Users\someuser\Desktop\Debug>sqllocaldb v 
Microsoft SQL Server 2014 (12.0.2000.8)` 

Quando si esegue la mia applicazione su quello stesso computer di destinazione, tuttavia, ottengo il seguente errore.

C:\Users\someuser\Desktop\Debug>Testing_Console
11:21:07,912 [1] INFO TestingConsole.Program - Current Directory is C:\Users\someuser\Desktop\Debug
Extra Info: (null)


Unhandled Exception: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Cannot create an automatic instance. See the Windows Application event log for error details.

Quanto segue è l'inizio del mio file app.config, dove sto definendo la stringa di connessione. Ho provato a inserire il percorso del file diretto nel file LM, ma ciò non risolve il problema. Ciò era prevedibile, tuttavia, poiché il programma funziona da qualsiasi directory sui computer con Visual Studio installato.

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <connectionStrings> 
    <add name="KomoLM_Console.Properties.Settings.LMConnectionString" 
     providerName="System.Data.SqlClient" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\LM.mdf;Integrated Security=True;MultipleActiveResultSets=True" 
/> 
    </connectionStrings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 

Non so se il problema riguarda solo l'installazione di SQL Server Express LocalDB 2014. Qualcuno può dirmi quale potrebbe essere il mio problema?

+0

possibile duplicato di [SQL Netw Interfacce ork, errore: 50 - Si è verificato un errore di runtime del database locale. Impossibile creare un'istanza automatica] (http: // stackoverflow.it/questions/26248293/sql-network-interfaces-error-50-local-database-runtime-error-happened-canno) – melancia

+0

Il problema era correlato all'installazione di Sql Server Express LocalDB 2014. Con quella versione MS ha cambiato i requisiti delle stringhe di connessione. Invece di "Data Source = (LocalDB) \ V11.0", la stringa di connessione è "Data Source = (LocalDB) \ MSSQLLocalDB". Dopo aver cambiato la mia stringa di connessione, il programma funziona correttamente su un computer su cui è installato LocalDB 2014. Ecco un link a un articolo a riguardo: [link] (https://connect.microsoft.com/SQLServer/feedback/details/845278/sql-server-2014-express-localdb-does-not-create-automatic- instance-v12-0) – MDig

+0

LocalDB è pensato SOLO per lo sviluppo in Visual Studio. È normale che non funzioni su computer senza VS. Per la produzione utilizzare solo SQL Server Express Edition. – Endrju

risposta

26

Il problema riguardava l'installazione di Sql Server Express LocalDB 2014 anziché 2012. Con tale versione MS ha modificato i requisiti delle stringhe di connessione. Invece di Data Source=(LocalDB)\V11.0, la stringa di connessione è Data Source=(LocalDB)\MSSQLLocalDB. Dopo aver cambiato la mia stringa di connessione, il programma funziona correttamente su un computer su cui è installato LocalDB 2014. Ecco un link ad un articolo su di esso: https://connect.microsoft.com/SQLServer/feedback/details/845278/sql-server-2014-express-localdb-does-not-create-automatic-instance-v12-0

anche

http://msdn.microsoft.com/en-us/library/hh510202(v=sql.120).aspx

+0

Per me il nome dell'istanza (LocalDB) \ MSSQLLocalDB non ha funzionato. Comunque, grazie per il tentativo: D –

+0

Ho installato Microsoft SQL Server 2014 e il percorso "(LocalDB) \ MSSQLLocalDB" ha risolto il problema. – user2134488

+0

'MSSQLLocalDB' è semplicemente il nome di un'istanza. Puoi creare tutte le istanze di cui hai bisogno nominate come desideri. Apri 'cmd' e inserisci' sqllocaldb i'. Questo elenca le istanze disponibili. Creane una nuova usando: 'sqllocaldb c YouNewInstance'. In una versione precedente LocalDB ha creato automaticamente un'istanza chiamata 'v11.0' nella versione corrente questa istanza predefinita è chiamata' MSSQLLocalDB' –

7

Utilizzando "Data Source = (LocalDB) \ MSSQLLocalDB", inoltre, non ha lavorato mi formare. Ho dovuto accedere a databasseusing "Data Source = (LocalDB) \ V12.0" e per lavorare quell'accesso al lavoro avevo bisogno di eseguire questo comando prima "sqllocaldb creare" v12.0 ". Maggiori dettagli su questo link https://dyball.wordpress.com/2014/04/28/sql-2014-localdb-error-cannot-connect-to-locaidbv12-o/

+0

Grazie! Lo stesso ha funzionato per me, ma ho creato l'istanza denominata MSSQLLocalDB con "sqllocaldb create MSSQLLocalDB". Suppongo che non lo crei di default se non si ha VS installato sulla stessa macchina con SQL server. Nel mio caso si trattava di un'installazione completa del server SQL (non espressa) – axk

1

la stringa di connessione costruire avendo di (LocalDB)\v11.0 lavorerà con la LocalDB ENU\x64\SqlLocalDB.MSI data su questo link Download SqlLocalDB

ho provato questo sistema di destinazione in cui è installato senza Visual Studio. questa build si collegherà con il database con un solo SqlLocalDB.msi installato. non è necessario installare SqlExpress sul sistema di destinazione