Come trovare la porta per MS SQL Server 2008?

Sto eseguendo MS SQL Server 2008 sul mio computer locale. So che la porta di default è 1433 ma un po ‘come non sta ascoltando su questa porta. SQL è un’edizione Express.

Ho già provato il registro, SQL Server Management Studio, il registro e la stored procedure estesa per trovare la porta. Ma non riuscivo a trovarlo. Mi aiuti per favore. Grazie.

Fare clic sul pulsante Start in Windows. Vai a All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Fare clic su SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP doppio clic (clic destro selezionare Properties ) su TCP/IP

Troverete la Default Port 1433 .

A seconda della connessione, il numero di porta può variare.

Puoi anche guardare con a

 netstat -abn 

Fornisce alle porte l’applicazione corrispondente che le mantiene aperte.

Modifica : o TCPView .

Ecco 5 metodi che ho trovato:

  • Metodo 1: Gestione configurazione SQL Server
  • Metodo 2: Visualizzatore eventi di Windows
  • Metodo 3: log degli errori di SQL Server
  • Metodo 4: sys.dm_exec_connections DMV
  • Metodo 5: lettura del registro utilizzando xp_instance_regread

Metodo 4: sys.dm_exec_connections DMV
Penso che questo sia quasi il modo più semplice …
I DMV restituiscono lo stato del server che può essere utilizzato per monitorare l’istanza di SQL Server. Possiamo utilizzare sys.dm_exec_connections DMV per identificare il numero di porta che l’istanza di SQL Server sta ascoltando utilizzando il codice T-SQL sottostante:

 SELECT local_tcp_port FROM sys.dm_exec_connections WHERE session_id = @@SPID GO Result Set: local_tcp_port 61499 (1 row(s) affected) 

Metodo 1: Gestione configurazione SQL Server

Passaggio 1. Fare clic su Start> Tutti i programmi> Microsoft SQL Server 2012> Strumenti di configurazione> Gestione configurazione di SQL Server

Passaggio 2. Accedere a Gestione configurazione SQL Server> Configurazione rete SQL Server> Protocolli per

Passaggio 3. Fare clic con il pulsante destro su TCP / IP e selezionare Proprietà

inserisci la descrizione dell'immagine qui

Passaggio 4. Nella finestra di dialogo Proprietà TCP / IP, andare alla scheda Indirizzi IP e scorrere fino al gruppo IPAll.

inserisci la descrizione dell'immagine qui

Se SQL Server, se configurato per l’esecuzione su una porta statica, sarà disponibile nella casella di testo Porta TCP e, se è configurato sulla porta dynamic, la porta corrente sarà disponibile nella casella di testo Porte dinamiche TCP. Qui la mia istanza è in ascolto sulla porta numero 61499.

Gli altri metodi che puoi trovare qui: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

Mi sono imbattuto in questo perché avevo appena avuto problemi a creare una connessione remota e non riuscivo a capire perché impostare la porta 1433 nel firewall non stia facendo il lavoro. Finalmente ho il quadro completo, quindi ho pensato di doverlo condividere.

Innanzitutto è necessario abilitare “TCP / IP” utilizzando Gestione configurazione SQL Server in Protocolli per SQLEXPRESS!

Quando viene utilizzata un’istanza denominata (“SQLExpress” in questo caso), questa verrà ascoltata su una porta dynamic. Per trovare questa porta dynamic hai un paio di opzioni; per dirne alcuni:

  • controllando ERRORLOG di SQL Server situato in '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log' (all’interno troverai una riga simile a questa: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' 51118]" -> quindi 51118 è la porta dynamic in questo caso.

  • controllo registro: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll , nel mio caso TcpDynamicPorts=51118 .

    Modifica : {MSSQL instance name} è simile a: MSSQL10_50.SQLEXPRESS , non solo SQLEXPRESS

Ovviamente, consentendo questa porta TCP nel firewall e creando una connessione remota passando in: "xxxx,51118" (dove xxxx è l’ip del server) già lo risolve a questo punto.

Ma poi volevo connettermi da remoto passando il nome dell’istanza (es: xxxx\SQLExpress ). Questo è quando il servizio SQL Browser entra in gioco. Questa è l’unità che risolve il nome dell’istanza nella porta 51118. Il servizio SQL Browser è in ascolto sulla porta UDP 1434 (standard e statico), quindi ho dovuto permetterlo anche nel firewall del server.

Per estendere un po ‘la risposta effettiva: se a qualcun altro non piacciono le porte dinamiche e vuole una porta statica per la sua istanza di SQL Server, dovresti provare questo link .

Nel registro ERROLOG per una riga come di seguito. Se non lo vedi, SQL Server non è abilitato per l’accesso remoto, o semplicemente non tramite TCP. È ansible modificare questo tramite Gestione configurazione SQL Server.

 Server is listening on [ 192.128.3.2  1433]. 

Ho risolto il problema abilitando il TCP / IP utilizzando Gestione configurazione SQL Server in Protocolli per SQLEXPRESS2008, ho riavviato il servizio e ora “Il server è in ascolto” viene visualizzato nel file ERRORLOG

Prova questo (richiede l’accesso a sys.dm_exec_connections ):

 SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL 
 USE master GO xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' GO 

[Identificare la porta utilizzata dall’istanza con nome del motore di database di SQL Server leggendo i log degli errori di SQL Server]

Io uso il seguente script in SSMS

 SELECT s.host_name ,c.local_net_address ,c.local_tcp_port ,s.login_name ,s.program_name ,c.session_id ,c.connect_time ,c.net_transport ,c.protocol_type ,c.encrypt_option ,c.client_net_address ,c.client_tcp_port ,s.client_interface_name ,s.host_process_id ,c.num_reads as num_reads_connection ,c.num_writes as num_writes_connection ,s.cpu_time ,s.reads as num_reads_sessions ,s.logical_reads as num_logical_reads_sessions ,s.writes as num_writes_sessions ,c.most_recent_sql_handle FROM sys.dm_exec_connections AS c INNER JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id --filter port number --WHERE c.local_tcp_port <> 1433 

Questo può essere fatto anche tramite un port scan, che è l’unico metodo ansible se non si dispone dell’accesso di amministratore a un server remoto.

L’uso di Nmap ( http://nmap.org/zenmap/ ) per eseguire una “intensa scansione TCP” ti darà risultati come questo per tutte le istanze sul server:

 [10.0.0.1\DATABASE] Instance name: DATABASE Version: Microsoft SQL Server 2008 R2 RTM Product: Microsoft SQL Server 2008 R2 Service pack level: RTM TCP port: 49843 Named pipe: \\10.0.0.1\pipe\MSSQL$DATABASE\sql\query 

Nota importante: per testare con query analyzer o MS SQL Server Management Studio, è necessario creare il nome e la porta del server in modo diverso rispetto a quello che si collegherebbe normalmente a una porta, ad esempio tramite HTTP, utilizzando una virgola anziché due punti .

  • Nome server Management Studio: 10.0.0.1,49843
  • Stringa di connessione: Data Source=10.0.0.1,49843

però

  • Stringa di connessione JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

È ansible utilizzare questi due comandi: tasklist e netstat -oan

Tasklist.exe è come taskmgr.exe ma in modalità testo.

Con tasklist.exe o taskmgr.exe è ansible ottenere un PID di sqlservr.exe

Con netstat -oan , mostra un PID di connessione e puoi filtrarlo.

Esempio:

 C:\>tasklist | find /i "sqlservr.exe" sqlservr.exe 1184 Services 0 3.181.800 KB C:\>netstat -oan | find /i "1184" TCP 0.0.0.0:1280 0.0.0.0:0 LISTENING 1184 

In questo esempio, la porta SQLServer è 1280

Estratto da: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html

Funziona per SQL Server 2005 – 2012. Cerca ID evento = 26022 nel registro degli errori nelle applicazioni. Questo mostrerà il numero di porta del server SQL così come gli indirizzi IP sono autorizzati ad accedere.

Oltre a quanto elencato sopra, ho dovuto abilitare sia le porte TCP che UDP per SQLExpress per connettersi da remoto. Poiché nella mia macchina di sviluppo ho tre diverse istanze, 1430-1435 per TCP e UDP.