Creazione di una stringa di connessione valida tramite named pipe

Quando l'istanza predefinita di MicrosoftSQL Server è in attesa sul protocollo Named Pipes, utilizza \\.\pipe\sql\query come nome della pipe, a meno che l'utente non modifichi l'impostazione. Il punto indica che il computer è locale, pipe indica che la connessione è una named pipe e sql\query è il nome della pipe. Per connettersi alla pipe predefinita, è necessario che il nome della pipe dell'alias sia \\<computer_name>\pipe\sql\query. Se SQL Server è stato configurato per essere in attesa su una pipe diversa, è necessario che il nome della pipe utilizzi tale pipe. Se ad esempio SQL Server utilizza \\.\pipe\unit\app come pipe, è necessario che l'alias utilizzi \\<computer_name>\pipe\unit\app come nome della pipe.

Per creare un nome di pipe valido, è necessario:

  • Specificare un Nome alias.

  • Selezionare Named pipes in Protocollo.

  • Immettere un valore in Nome pipe. In alternativa, è possibile lasciare vuoto il campo Nome pipe. Il nome appropriato verrà immesso automaticamente da Gestione configurazione SQL Server, dopo che sono stati specificati Protocollo e Server.

  • Specificare un Server. Per un'istanza denominata è possibile specificare un nome di server e un nome di istanza.

Al momento della connessione, il componente SQL Server Native Client leggerà i valori di server, protocollo e nome pipe dal Registro di sistema per il nome alias specificato e creerà un nome di pipe nel formato np:\\<computer_name>\pipe\<pipename> o np:\\<IPAddress>\pipe\<pipename>.Per un'istanza denominata, il nome di pipe predefinito è \\<computer_name>\pipe\MSSQL$<instance_name>\sql\query.

[!NOTA]

In Microsoft Windows XP Service Pack 2 è attivato Windows Firewall, che chiude la porta 445 per impostazione predefinita. Poiché MicrosoftSQL Server comunica sulla porta 445, è necessario aprire nuovamente tale porta se SQL Server è configurato per l'attesa di connessioni client in arrivo mediante named pipe. Per informazioni sulla configurazione di un firewall, vedere "Procedura: Configurazione di un firewall per l’accesso a SQL Server" nella documentazione in linea di SQL Server oppure vedere la documentazione relativa al firewall.

Connessione al server locale

Quando si stabilisce una connessione a SQL Server in esecuzione nello stesso computer del client, è possibile utilizzare (local)come nome del server. L'utilizzo di (local) non è consigliabile in quanto genera ambiguità, ma può risultare utile se si è sicuri che il client venga eseguito nel computer desiderato. Se, ad esempio, si crea un'applicazione per gli utenti mobili non connessi, ad esempio il personale di vendita, e SQL Server verrà eseguito su computer portatili e utilizzato per archiviare dati di progetto, un client che si connette al server (local) si connetterà sempre all'istanza di SQL Server in esecuzione sul portatile. In sostituzione di (local) è possibile utilizzare la parola localhost o un punto (.).

Verifica del protocollo di connessione

La query seguente restituisce il protocollo utilizzato per la connessione corrente.

SELECT net_transport 
FROM sys.dm_exec_connections 
WHERE session_id = @@SPID;

Esempi

Connessione tramite il nome del server alla pipe predefinita:

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             <servername>

Connessione tramite indirizzo IP alla pipe predefinita:

Alias Name         <serveralias>
Pipe Name          <leave blank>
Protocol           Named Pipes
Server             <IPAddress>

Connessione tramite il nome del server a una pipe non predefinita:

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\unit\app
Protocol           Named Pipes
Server             <servername>

Connessione tramite il nome del server a un'istanza denominata:

Alias Name         <serveralias>
Pipe Name          \\<servername>\pipe\MSSQL$<instancename>\SQL\query
Protocol           Named Pipes
Server             <servername>

Connessione al computer locale tramite localhost:

Alias Name         <serveralias>
Pipe Name          <blank>
Protocol           Named Pipes
Server             localhost

Connessione al computer locale tramite un punto:

Alias Name         <serveralias>
Pipe Name          <left blank>
Protocol           Named Pipes
Server             .

[!NOTA]

Per specificare il protocollo di rete come parametro sqlcmd, vedere "Procedura: Connessione al Motore di database tramite sqlcmd.exe" nella documentazione in linea di SQL Server.