Domanda

Si è verificato un errore durante la connessione al server.Quando ci si connette a SQL Server 2005, questo errore potrebbe essere causato dal fatto che con le impostazioni di default di SQL Server non ammette connessioni remote.(fornitore di:Named Pipe Fornitore di errore:40 - impossibile aprire una connessione a SQL Server)

Ciao io sono nuovo in via di sviluppo su SQL Server 2005.Ho lavorato per diversi anni con SQL Server 2000, ma dopo aver fatto le solite cose che faccio per la connessione al server ho questa eccezione sul server web.

Ci sono molti link su google quel punto mi possibili soluzioni, ma nessuno di loro ha risolto il mio problema.Ho fatto delle modifiche su una "Superficie qualunque cosa..." finestra di dialogo (Che diavolo è?????Perché SQL Server è cambiato così tanto???Sembra così complicato ora).

Mi hanno assicurato che SQL Server 2005 è correttamente configurato per consentire le connessioni in entrata su istanza del server di database.Ho anche selezionato Automatico come il tipo di Avvio per avviare il servizio SQL Server Browser automaticamente ogni volta che viene avviato il sistema.E no, non c'è nessun firewall in esecuzione.

Ho provato a cambiare la stringa di connessione per la connessione tramite una porta per la connessione tramite IP, per la connessione utilizzando il nome di istanza...

Nulla sembra funzionare, sto ancora ricevendo lo stesso errore.Qualche suggerimento?

Rispondendo alle domande che le persone hanno fatto:Sì, è possibile connettersi utilizzando la gestione di uno studio da un computer diverso.Sì, sono sicuro che è configurato per accettare locale e remoto TCP/IP e named pipe.Sì, ho riavviato il server.

Io sto usando la protezione modalità Mista, di cui ho già abilitato.Ho già attivato l'utente sa.Io sono in grado di connettersi al database utilizzando un .file udl, e ho controllato che la mia stringa di connessione è OK.Posso collegare al database utilizzando DBArtisan e strumenti client di SQL Server.Posso fare che sia sul server che su una macchina diversa.Anche con tutto questo...

Il sito è ancora in grado di connettersi.

Nuovo aggiornamento...Ho lottato tutto il giorno con questo problema, e ancora non hai trovato la causa.Sembra che il messaggio di errore che ho postato è un errore generico che .net dà quando non è in grado di connettersi.Ho messo il cestino sulla stringa di connessione (digitando server che non esistono) e ho ancora lo stesso errore.

Queste sono alcune delle stringhe di connessione ho utilizzato sul server:

connectionString="Integrated Security=SSPI;Data Source=SERVER;Initial Catalog=db;Libreria di rete=DBMSSOCN;"

connectionString="Data Source=SERVER;Initial Catalog=db;User ID=sa;Password= "xxxxx";"

connectionString="Data Source=SERVER\MSSQLSERVER;Initial Catalog=db;User ID=sa;Password= "xxxxx";"

Ho provato a registrare l'istanza di sql server utilizzando alcuni strani comando, ho trovato qui:http://kb.discountasp.net/article.aspx?id=1041 Per farlo ho usato il aspnet_regsql.exe strumento.Ancora non funziona...

So anche che il server ha l'ultima versione di MDAC installata su di esso.L'unica cosa che sto sospetto è che il server è dotato di due motori di Database:SERVER e server\sqlexpress

Non che abbia qualcosa a che fare con il problema?

È stato utile?

Soluzione 9

Ho risolto il problema che avevo con la connessione.Il problema era la mia domanda.La causa del problema è che una stringa di connessione per lo sviluppo (invece della produzione) del database, è stato codificato da una delle finestre di dialogo che genera il set di dati.Questa finestra di dialogo inserito la stringa di connessione sia sul web.config e nascoste sourcecode file chiamato "Impostazioni".le impostazioni.cs".Il problema è stato risolto fissando la stringa di connessione nella posizione corretta.

Il messaggio di errore era del tutto fuorviante, ma sono stato in grado di trovare che tutti i metodi presentati sulla traccia dello stack.

Quindi, se mai trovare questo messaggio di errore, ci sono tonnellate di possibili cause.La tua prima scommessa è quella di seguire la normale procedura per questo errore, che sono di controllo che consente al server remoto e le connessioni locali e riavviare il browser.

Se questo non funziona, controllare la traccia dello stack, cercare il codice che è nella vostra applicazione, mettere un punto di interruzione c'e esplorare tutte le proprietà della stringa di connessione.Almeno è così che ho risolto.

Altri suggerimenti

L'unica cosa che sto sospetto è che il server è dotato di due motori di Database:SERVER e server\sqlexpress

Penso che questa sia l'origine del problema.Quale si desidera connettersi?È necessario specificare il "istanza" che si connette.

Supponendo che si desidera connettere al SERVER esempio, la stringa di connessione dovrebbe assomigliare a questo (assumendo il nome di istanza predefinita):

Data Source=NOMESERVER\MSSQLSERVER;Initial Catalog=db;User ID=sa;Password=xxxxx;

O per sql express la stringa di connessione simile a questo:Data Source=NOMESERVER\sqlexpress;Initial Catalog=db;User ID=sa;Password=xxxxx;

Può connettersi a SQL Server tramite la Gestione di uno Studio da un computer diverso?Questo potrebbe aiutare a restringere se è la configurazione di SQL Server o stringa di connessione di configurazione.

Ricontrolla la configurazione superficie di attacco, e assicurarsi che le connessioni TCP/IP sono ammessi.

Questo potrebbe essere molte cose.La prima cosa che vorrei verificare è quello di assicurarsi che è possibile connettersi al server utilizzando SQL Server Management Studio.Secondo, controllare la stringa di connessione per assicurarsi che sia corretto.Configurazione superficie di attacco non si dovrebbe applicare per le connessioni locali.

Prova a re-installare il più recente di MDAC sul server.Una volta ho avuto un problema simile e questo risolto.

[http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=en][1]

In base all'errore sembra che il codice sta tentando di connettersi tramite named pipe, piuttosto che TCPIP.Si può effettivamente bisogno di indicare specificamente nella stringa di connessione che il provider sql utilizza la connessione tcp / ip, in modo che la stringa di connessione è il seguente.

Utilizzando l'Autenticazione Integrata di windows (windows):

Integrated Security=SSPI;Data Source=SERVERNAME;Initial Catalog=DATABASENAME; Libreria di rete=DBMSSOCN;

Utilizza l'Autenticazione di SQL server:

UID=Nome utente;PWD=PASSWORD;Data Source=SERVERNAME;Initial Catalog=DATABASENAME; Libreria di rete=DBMSSOCN;

Ho visto qualcosa di simile a questo accadere prima, dove per qualche ragione "named pipe" per impostazione predefinita viene utilizzato come trasporto/livello di connessione, soprattutto perché entrambi l'applicazione web e sql server sono in esecuzione sulla stessa macchina.Io in genere uso sempre tcpip come il trasporto o la libreria di rete.

Un'altra tecnica di risoluzione dei problemi è quello di utilizzare un file UDL (o file di collegamento dati) per risolvere i problemi di connessione.Questo consente di passare da un provider di collegamento (ODBC, OLEDB, ecc) e per impostare altre opzioni di connessione.

  1. Sulla scrivania sopra la macchina, fare clic destro e scegliere nuovo -> documento di testo.
  2. Rinominare il *.file txt per TestConnect.udl (il nome non importa, ha solo bisogno di essere .udl estensione).Si dovrebbe vedere l'icona cambia da un file di testo icona di un'icona che mostra un computer sulla cima di una griglia di dati, o qualcosa di simile (in altre parole, windows dovrebbe avere un'icona per esso.).
  3. Ora, fare doppio clic sul file e si vedrà una "Proprietà" dell'applet vengono visualizzati.
  4. Fare clic sulla scheda Provider, e vedrete un elenco di differenti fornitori.Mi piacerebbe iniziare da solo la scelta di "Microsoft OLE DB Provider for SQL Server".Possiamo usare questo per confermare che OLE DB può collegare o meno.
  5. Fare clic su avanti e immettere il server o l'indirizzo ip.Selezionare protezione Integrata di Windows NT.(Si può sempre tornare indietro e cambia per l'utilizzo di un account di accesso sql.) A questo punto è possibile fare clic su "Test di Connessione".Se la connessione ha esito positivo, quindi selezionare il nome di un database dall'elenco a discesa.
  6. Infine, se la connessione non riesce, selezionare la scheda "Tutto", e quindi cercare "Libreria di Rete" e modifica il suo valore, l'impostazione di "DBMSSOCN".
  7. Torna alla scheda connessione e fare clic su "test di connessione" di nuovo.
  8. Ripetere i passaggi 4 e 5 di questo tempo con il "SQL Native Client" selezionato.

Spero che questo aiuta.

Al prompt fa:

osql-E -S

...ottenere un > prompt dei comandi ?

Hai provato a specificare il nome dell'istanza della stringa di connessione?A quanto pare sql server express, in particolare, è schizzinoso di avere il nome di istanza.

Ho anche iniziato a curiosare in giro con la Gestione Configurazione SQL Server.Così ha fatto fai clic su "SQL Server 2005 la Configurazione di Rete" e poi guardare "Protocolli per InstanceName"?Ed è abilitato il protocollo TCP/IP e Named Pipe?

Hai anche la "Configurazione SQL Native Client" --> "i Protocolli Client", e si vede che il protocollo TCP/IP e Named Pipe è attivata anche lì?

Utilizzo di SQL Server 2005 Superficie strumento di Configurazione, fare clic su "Configurazione Superficie di attacco per i Servizi e Collegamenti", poi sotto "del Motore di Database" --> "Connessioni Remote" che cosa è selezionato?Sembra che si sta tentando di connettersi tramite Named Pipe è necessario assicurarsi che "gli enti Locali e connessioni remote" e "utilizzo di tcp/ip e named pipe" è selezionata.

Come probabilmente sapete, una volta che vengono apportate modifiche, è necessario arrestare e riavviare l'istanza di sql server tramite la Gestione di Studio (non è necessario riavviare tutta la macchina, anche se il riavvio della macchina e si arriva lì).

E il mio ultimo consiglio.Passo lontano da questo per un po', e ottenere la vostra mente fuori di esso per un paio di minuti.Quando ci si immerge di nuovo, si può trovare qualcosa che hai perso o trascurato prima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top