In questi giorni ho avuto l’occasione di fare il setup di una nuova istanza SQL Server 2008 R2 (x64) su un server di sviluppo (e test) con S.O. Windows 2008 R2 (x64).
Durante l’installazione, il setup chiede all’utente se desidera installare SQL Server in modalità "Default Instance" o "Named Instance". Tipicamente, per la prima istanza si sceglie "Default Instance" mentre per una eventuale seconda istanza (sulla stessa macchina) si sceglie "Named Instance".
Durante l’installazione, ho scelto però "Named Instance" perché volevo che il nome dell’istanza fosse parlante e descrivesse il prodotto e la versione di SQL Server (a beneficio dei colleghi)… nonostante fosse l’unica istanza sulla macchina.
Terminata l’installazione ho applicato, senza problemi, l’SP1 di SQL Server 2008 R2.
Per consentire ai client di accedere alla nuova istanza ho aperto, sul firewall, la porta 1433 dove by default SQL Server sta in ascolto per rispondere alle richieste di connessione.
Ho scoperto ben presto che nessun client poteva accedere alla nuova istanza, non solo attraverso l’applicazione gestionale, ma anche con gli strumenti di amministrazione remota (SSMS) la connessione veniva respinta con l’errore:
Si è verificato un errore di rete o specifico dell’istanza mentre si cercava di stabilire una connessione con il server SQL. Il server non è stato trovato o non è accessibile. Verificare che il nome dell’istanza sia corretto e che il server SQL sia configurato in modo da consentire connessioni remote. (provider: Interfacce di rete SQL, Error: 26 – Errore nell’individuazione del server/dell’istanza specificata).
Volete sapere com’è andata a finire?
Ho risolto grazie a quest’articolo pubblicato sul blog del TEAM SQL Protocols:
Questi i passaggi chiave:
"First of all, you get this error message only if you are trying to connect to a SQL Server named instance. For default instance, you never see this. Why? Because even if we failed at this stage (i.e. error locating server/instance specified), we will continue to try connect using default values, e.g defaul TCP port 1433, default pipe name for Named Pipes. You may see other error message due to failure later, but not this error message.
Every time client makes a connection to SQL Server named instance, we will send a SSRP UDP packet to the server machine UDP port 1434. We need this step to know configuration information of the SQL instance, e.g., protocols enabled, TCP port, pipe name etc. Without these information, client does know how to connect the server and it fails with this specified error message."
Dopo aver aperto (sul firewall) la porta 1434, il problema si è risolto.