Como encontrar a porta para o MS SQL Server 2008?
estou a correr o servidor de MS SQL 2008 na minha máquina local. Eu sei que a porta padrão é 1433, mas alguns como ele não está ouvindo neste Porto. O SQL é uma edição expressa.
já tentei o log, SQL Server Management Studio, registry e extended stored procedure para encontrar a porta. Mas não consegui encontrá-lo. Por favor, ajuda-me. Obrigado.
13 answers
Carregue no botão Start
nas janelas.
Ir para All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager
Clique em SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP
duplo-click (botão direito do rato seleccione Properties
) em TCP/IP
Vais encontrar Default Port 1433
.
Dependendo da ligação, o número da porta pode variar.
Também podes olhar com um
netstat -abn
Dá aos portos a aplicação correspondente que os mantém abertos.
Edit: ou TCPView.
- Método 1: Gestor de configuração do servidor SQL
- Método 2: Visualizador De Eventos Do Windows
- Método 3: registos de erros do servidor SQL
- Método 4: sys. dm_exec_connections DMV
- Método 5: leitura do registo utilizando o xp_ instance_read
Método 4: sys. dm_exec_connections DMV
Acho que esta é quase a maneira mais fácil...
DMVs return server state that can be used to monitor SQL Server Instance. Podemos use sys. dm_exec_connections DMV para identificar o número de porto que a instância do servidor SQL está a ouvir ao usar o código T-SQL abaixo:
SELECT local_tcp_port
FROM sys.dm_exec_connections
WHERE session_id = @@SPID
GO
Result Set:
local_tcp_port
61499
(1 row(s) affected)
Método 1: Gestor de configuração do servidor SQL
Passo 1. Carregue em Start > todos os programas > Microsoft SQL Server 2012 > Ferramentas de configuração > SQL Server Configuration Manager
Passo 2. Go to SQL Server Configuration Manager > SQL Server Network Configuration > Protocols for
Passo 3. Carregue com o botão direito no TCP / IP e seleccionar as Propriedades
Passo 4. Na janela de Propriedades do TCP/IP, vá para a página de endereços IP e vá para o Grupo IPAll.
Se o servidor SQL estiver configurado para correr num porto estático, estará disponível no campo de texto do Porto TCP, e se estiver configurado no Porto dinâmico, então o porto actual estará disponível no campo de texto do Porto dinâmico TCP. Aqui o meu exemplo é ouvir no Porto número 61499.
Os outros métodos que pode encontrar aqui: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/
Em Primeiro Lugar, é necessário activar o "TCP / IP" usando o Gestor de configuração do servidor SQL nos protocolos para o SQLEXPRESS!
Quando uma instância nomeada é usada ("SQLExpress" neste caso), isto irá ouvir numa porta dinâmica. Para encontrar esta dinâmica porto você tem algumas opções; para citar algumas:
A verificação {[[0]} do servidor de SQL localizado em {[[1]} (no interior irá encontrar uma linha semelhante a esta:
"2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"
--> portanto, o 51118 é o porto dinâmico neste caso.-
Registo de Verificação:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll
, para o meu casoTcpDynamicPorts=51118
.Editar:
{MSSQL instance name}
é algo como:SQLEXPRESS
"x.x.x.x,51118"
(onde x. x. x. x é o IP do servidor) já resolve isso neste ponto.
Mas depois quis ligar-me remotamente passando pelo nome da instância (p.ex.: x.x.x.x\SQLExpress
). Isto é quando o serviço de navegação SQL entra em jogo. Esta é a unidade que resolve o nome da instância no porto 51118. O serviço de navegação SQL ouve na porta UDP 1434 (standard & static), então eu tive que permitir isso também na firewall do servidor.
Para estender um pouco a resposta real: se alguém não gosta de portas dinâmicas e quer uma porta estática para a sua instância de servidor SQL, deverá tentar esta ligação .
No registo do ERROLOG para uma linha como a seguinte. Se você não vê que o servidor SQL não está ativado para acesso remoto, ou simplesmente não é via TCP. Pode alterar isto através do Gestor de configuração do servidor SQL.
Server is listening on [ 192.128.3.2 <ipv4> 1433].
Resolvi o problema ao activar o TCP / IP usando o Gestor de configuração do servidor de SQL nos protocolos para o SQLEXPRESS2008, reiniciei o serviço e agora o" servidor está a ouvir " aparece no ficheiro de ERRORLOG
Tenta isto (requer acesso 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
[identificar o Porto usado pela instância nomeada do motor de bases de dados do servidor SQL lendo os registos de erros do servidor SQL]
Uso o seguinte script no 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
Isto também pode ser feito através de uma varredura de portas, que é o único método possível se você não tiver acesso administrativo a um servidor remoto.
Usando Nmap ( http://nmap.org/zenmap/) fazer uma" verificação intensa do TCP " dar-lhe-á resultados como este para todas as instâncias no servidor:
[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: para testar com o analisador de consultas ou com o estúdio de gestão de Servidores de MS SQL, você deve formar o seu nome e porto de forma diferente do que normalmente se ligaria a um Porto, sobre HTTP por exemplo, usando uma vírgula em vez de um cólon .
- Management Studio Server Name:
10.0.0.1,49843
- Cadeia De Ligação:
Data Source=10.0.0.1,49843
No entanto
- Cadeia de ligação JDBC:
jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
Pode usar estes dois comandos: tasklist
e netstat -oan
Tasklist.exe
é como taskmgr.exe
mas no modo de texto.
Com tasklist.exe
ou {[4] } pode obter um PID de sqlservr.exe
Com netstat -oan
, mostra um PID de ligação, e você pode filtrá-lo.
Exemplo:
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
Neste exemplo, a porta SQLServer é 1280
Extraído de: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html
Este funciona para o servidor SQL 2005-2012. Procure o ID do evento = 26022 no registo de erros em aplicações. Isso irá mostrar o número de porta do servidor sql, bem como quais endereços ip estão autorizados a acessar.
Para além do que está listado acima, tive de activar tanto as portas TCP como UDP para o SQLExpress se ligar remotamente. Como eu tenho três instâncias diferentes na minha máquina de desenvolvimento, eu habilito {[[0]} para TCP e UDP.