Vedo il seguente errore quando si tenta di aprire una connessione DB dall'interno dell'applicazione C#. Mi rendo conto che questo errore si è probabilmente verificato in centinaia di domande prima. Tuttavia, in questo scenario l'errore viene visualizzato solo sulle app C# in esecuzione su sul mio PC desktop specifico. Ho setacciato Internet tramite Google e all'interno di questo sito Web, ma non riesco a trovare una soluzione.SqlConnection bloccato su Named Pipes
ERRORE:
"Si è verificato un errore relativo alla rete o specifica dell'istanza mentre stabilisce una connessione a SQL Server Il server non è stato trovato o non era accessibile Verificare che il nome dell'istanza sia corretto e che SQL Server.. è configurato per consentire le connessioni remote. (fornitore: Canali denominati fornitore, errore: 40 - Impossibile aprire una connessione a SQL Server)"
PERCHE questo scenario è unico:
sono in grado di connettersi a SQL server da SQL Server Management Studio (SSMS). Questa applicazione funziona su un altro computer ed è in grado di stabilire una connessione al server SQL da lì. Quindi questo scenario di errore è specifico per le applicazioni C# in esecuzione sul mio PC desktop specifico. Altre app funzionano (SSMS). Altro lavoro di PC.
Quando "annuso il filo" tramite WireShark, la traccia indica che la mia app sta tentando di connettersi tramite NamedPipes (ad esempio \ Server \ IPC $). Non riesco a forzarlo a usare TCP/IP.
cose che ho provato:
- Re-installed.NET quadro
- Re-installato Visual Studio (C# - Express versione 2010)
- Creato un alias all'interno cliconfg.exe.
C'è qualcosa che mi è mancato?
Qui ci sono stringhe di connessione che ho provato ...
Data Source=<servername>;Initial Catalog=HIE;Integrated Security=true
Server=tcp:10.240.11.81;Integrated Security=SSPI; database=HIE
Data Source=10.240.11.81,1433;Network Library=DBMSSOCN;Initial Catalog=HIE;User ID=<SqlUserIdThatISetUpAsSysAdmin>;Password=<password>
Ecco il frammento di codice:
_conn = new SqlConnection(); // _conn declared globally
_conn.ConnectionString = <the connection string above>;
_conn.Open();
Metti il 'tcp:' anche in per 'Origine dati'. Inserisci la stringa di connessione nel codice sorgente C#. Il debugging di wireshark è stato molto buono perché mostra che non sta usando tcp. – usr
Grazie per la rapida risposta @usr. Amico, voi ragazzi siete VELOCI! Ho provato "Data Source = TCP:; Initial Catalog = HIE; Integrated Security = True" e "Data Source = TCP: 10.240.11.81; Initial Catalog = HIE; Integrated Security = True" e ha ricevuto nuovi messaggi: (provider: TCP Provider, errore: 0 - Si è verificato un errore irreversibile durante una ricerca nel database.) E (provider: Provider TCP, errore: 0 - È stato fornito un argomento non valido.) Google non mi ha fornito nulla su questi messaggi di errore. Il database "HIE" esiste sul server. –
È pazzesco. L'errore indica condizioni molto strane secondo Google. Puoi telnet su SQL Server usando quell'IP e la porta 1433? L'app viene eseguita come amministratore? Disattiva UAC o esegui elevati per favore. Per favore, esegui di nuovo Wireshark. Cosa risulta? – usr