2009-10-05 21 views
95

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.Come trovare la porta per MS SQL Server 2008?

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.

+0

sto aggiornando la questione con altre risorse ho guardato in modo che ho booksmarks di loro e altri possono farne uso. http://blogs.msdn.com/sql_protocols/archive/2008/11/05/tcp-listening-ports-and-endpoint-ports-behavior.aspx http://decipherinfosys.wordpress.com/2008/01/02/finding-the-port-number-per-a-particular-sql-server-instance/ http://dumbledad.wordpress.com/2008/07/09/getting-processing-working-with -sql-server-2008/ – royalGhost

+0

Sto usando la vista TCP per vedere la porta su cui è in esecuzione. Sono sorpreso di vedere che il server sta prendendo una porta dinamica invece di 1433 anche dopo averlo installato come istanza predefinita. Ho anche disinstallato l'edizione Express e installato l'edizione completa, dopo di che solo io posso vedere il processo come sqlservr.exe: 5272. E, la mia ipotesi è che sia in ascolto sulla porta 5272. – royalGhost

risposta

11

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. È possibile modificare questo tramite Gestione configurazione SQL Server.

Server is listening on [ 192.128.3.2 <ipv4> 1433]. 
+0

Non vedo quel registro ma su SQL Server Management Studio in Connessioni "Consenti connessioni remote a questo server" è selezionato. Quindi, la mia comprensione è che la connessione remota è consentita. – royalGhost

+0

@royal: oltre a "consenti connessioni remote" è necessario abilitare anche il protocollo TCP. In questo momento probabilmente il server sta ascoltando NP –

+0

vedere la risposta in basso da @morteza per leggere il registro tramite la query SQL 'xp_readerrorlog 0, 1, N'Server sta ascoltando'' – Tilo

46

Si potrebbe anche guardare con un

netstat -abn 

Dà le porte con l'applicazione corrispondente che li tiene aperta.

Modifica o TCPView.

+0

Puoi farmi sapere sotto quale nome è MS SQL Server 2008 è chiamato come un'applicazione? – royalGhost

+2

Dovrebbe essere sqlservr.exe (non ne ho uno da controllare). – rslite

+1

Questo ha funzionato per me. Il numero di porta è sulla linea * sopra * [sqlservr.exe]. – Zane

8

ho risolto il problema attivando il protocollo TCP/IP utilizzando Configuration Manager di SQL Server in Protocolli per SQLEXPRESS2008, ho riavviato il servizio e ora il "Server è in attesa" si presenta nel file ERRORLOG

129

Cliccare su Start in Windows. Vai All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Cliccare sulla SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP doppio click (click destro selezionare Properties) su TCP/IP

Troverete Default Port 1433.

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

+0

Sul mio computer, con Windows 10 e con SQL Server 2012 Express installato, * Gestione configurazione SQL Server * non è elencato in il menu Start di Windows, ma può essere trovato nello snap-in * Gestione computer * MMC sotto il gruppo * Servizi e applicazioni *. La porta dinamica non si trova anche nella voce "SQL client native configuration" (che è la versione "11.0" per me) ma nella voce * SQL Server Network Configuration * (e nella scheda * IP Addresses * di * TCP/IP * finestra delle proprietà del protocollo, nella parte inferiore, nell'impostazione * TCP Dynamic Ports *). –

1

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

1

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

17

Mi sono imbattuto in questo perché avevo appena avuto problemi nella creazione di 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.

Prima di tutto è necessario abilitare "TCP/IP" utilizzando Gestione configurazione SQL Server in Protocolli per SQLEXPRESS!

Quando si utilizza un'istanza denominata ("SQLExpress" in questo caso), questa verrà ascoltata su una porta dinamica. Per trovare questa porta dinamica hai un paio di opzioni; per citarne alcuni:

  • controllo ERRORLOG di SQL Server si trova nella '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log' (all'interno troverete una linea simile a questa: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]" -> quindi 51118 è la porta dinamica in questo caso.

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

    Edit: {MSSQL instance name} è qualcosa di simile: MSSQL10_50.SQLEXPRESS, non solo SQLEXPRESS

Naturalmente, permettendo a questa porta TCP nel firewall e la creazione di un collegamento remoto passando in: "x.x.x.x,51118" (dove xxxx è il server ip) già lo risolve a questo punto.

Ma poi volevo collegarmi in remoto passando il nome dell'istanza (ad es. x.x.x.x\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 & statico), quindi ho dovuto consentire questo anche nel firewall del server.

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

+1

+1 per il servizio SQL Browser. Questa è la chiave per il modo in cui SQL Express funziona con i numeri di porta – peterG

41

Qui ci sono 5 methodes ho trovato:

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

Metodo 4: sys.dm_exec_connections DMV
Penso che questo è quasi il modo più semplice ...
DMV tornare stato del server che può essere utilizzato per il monitoraggio di SQL Server istanza. Possiamo usare sys.dm_exec_connections DMV per identificare il numero della porta di SQL Server è in ascolto istanza sull'utilizzo di sotto codice T-SQL:

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: SQL Server Configuration Manager

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

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

Fase 3. Fare clic su selezionare Proprietà

enter image description here

Passo 4. Nella finestra di dialogo Proprietà TCP/IP TCP/IP e, andare alla scheda IP indirizzi e scorrere verso il basso per gruppo IPAll.

enter image description here

Se SQL Server se configurato per l'esecuzione su una porta statica sarà disponibile in Porta TCP testo, e se è configurato su porta dinamica allora porta corrente sarà disponibile in dinamiche TCP Ports casella di testo. Qui il mio esempio è in ascolto sulla porta numero 61499.

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

+1

Ha funzionato per me. Ho provato le proprietà TCP/IP di SQL Native Client Configuration e restituivo il valore predefinito 1433. Ma quando ho controllato le porte TCP dinamiche dalla configurazione di rete di SQL Server. Ho trovato che la porta è 67244. E dopo che sono riuscito a collegarmi con successo a quella porta. +1 – Reuben

4

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 
+0

Non so perché questo è stato downvoted, non dà la risposta immediata ma ti dà la risposta e molto altro ancora. Aggiungendo questo al mio elenco di query utili. – Tony

+0

come la query molto, inoltre sembra non mostrare se nessuna connessione è aperta/stabilita. – Tilo

6
USE master 
GO 
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO 

[Identificare porta utilizzata dal nome Istanza di Motore di database di SQL Server leggendo i log degli errori di SQL Server]

+1

grazie buon consiglio Morteza, ottengo un errore utilizzando quanto sopra su SQL2012 ma il seguente è sufficiente per le mie esigenze: XP_READERRORLOG 0, 1, N'Server sta ascoltando ' – mattpm

+0

Siete i benvenuti :) – Morteza

+0

Copia che ottiene errore con la tua query ma questo funziona, 'xp_readerrorlog 0, 1, N'Server sta ascoltando'' – Tilo

8

Provare 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 
+3

FYI: se il server SQL non ha una connessione aperta probabilmente non mostrerà nulla. – Tilo

+0

Se do il comando precedente, non viene mostrato nulla –

4

Ciò può anche essere eseguito tramite una scansione della porta, che è l'unico metodo possibile se non si dispone dell'accesso di amministratore a un server remoto.

Utilizzando Nmap (http://nmap.org/zenmap/) per fare una "scansione intenso TCP" vi darà risultati come questo per tutti 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 analizzatore di query o MS SQL Server Management Studio è necessario configurare il nome e la porta del server in modo diverso rispetto a quello che si collegherebbe normalmente a una porta, su HTTP ad esempio, utilizzando una virgola anziché i due punti.

  • Management Studio Server name: String 10.0.0.1,49843
  • Connection: Data Source=10.0.0.1,49843

tuttavia

  • String JDBC Connection: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
4

È possibile utilizzare questo due comandi:tasklist e netstat -oan

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

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

Con netstat -oan, mostra una connessione PID, e si può filtrare.

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, il porto SQLServer è 1280

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

Problemi correlati