Como encontrar a porta para o MS SQL Server 2008?

107

Estou executando o MS SQL Server 2008 em minha máquina local. Eu sei que a porta padrão é 1433, mas de alguma forma não está escutando nesta porta. O SQL é uma edição Express.

Já tentei o log, o SQL Server Management Studio, o registro e o procedimento armazenado estendido para localizar a porta. Mas, eu não consegui encontrar. Por favor me ajude. Obrigado.

royalghost
fonte
Estou atualizando a questão com outros recursos que examinei para que eu tenha marcadores deles e outros possam fazer uso deles também. blogs.msdn.com/sql_protocols/archive/2008/11/05/… decipherinfosys.wordpress.com/2008/01/02/… dumbledad.wordpress.com/2008/07/09/…
royalghost
Estou usando o TCP View para ver em que porta está sendo executado. Estou surpreso ao ver que o servidor está assumindo uma porta dinâmica em vez de 1433, mesmo depois de instalá-lo como uma instância padrão. Também desinstalei a edição express e instalei a edição completa, após a qual só posso ver o processo como sqlservr.exe: 5272. E, suponho que esteja escutando na porta 5272.
royalghost

Respostas:

140

Clique no Startbotão no Windows. Vamos paraAll Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Clique SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP duas vezes (clique com o botão direito e selecione Properties) em TCP/IP.

Você vai encontrar Default Port 1433.

Dependendo da conexão, o número da porta pode variar.

UdayKiran Pulipati
fonte
No meu computador, executando o Windows 10 e com o SQL Server 2012 Express instalado, o SQL Server Configuration Manager não está listado no menu Iniciar do Windows, mas pode ser encontrado no snap-in MMC de Gerenciamento do Computador no grupo Serviços e Aplicativos . A porta dinâmica também não está no item 'configuração do cliente nativo SQL' (que é a versão "11.0" para mim), mas no item Configuração de rede do SQL Server (e na guia Endereços IP da janela de propriedades do protocolo TCP / IP , em na parte inferior, na configuração Portas dinâmicas TCP ).
Kenny Evitt de
Essa resposta se refere à porta do cliente, não à porta do servidor, que é o que está sendo perguntado na pergunta original. A resposta de @ brothers28 abaixo é mais precisa.
Slogmeister Extraordinaire
52

Você também pode olhar com um

netstat -abn

Fornece as portas com o aplicativo correspondente que as mantém abertas.

Editar : ou TCPView .

rslite
fonte
Você pode me informar sob que nome o MS SQL Server 2008 é denominado como um aplicativo?
royalghost
2
Deve ser sqlservr.exe (não tenho um para verificar, no entanto).
rslite
1
Isso funcionou para mim. O número da porta está na linha acima de [sqlservr.exe].
Zane
Encontrei-o em Ssms.exe
ThiagoPonte
49

Aqui estão 5 métodos que encontrei:

  • Método 1: SQL Server Configuration Manager
  • Método 2: Visualizador de Eventos do Windows
  • Método 3: Logs de erros do SQL Server
  • Método 4: sys.dm_exec_connections DMV
  • Método 5: Leitura do registro usando xp_instance_regread

Método 4: sys.dm_exec_connections DMV
Acho que essa é quase a maneira mais fácil ...
DMVs retornam o estado do servidor que pode ser usado para monitorar a instância do SQL Server. Podemos usar sys.dm_exec_connections DMV para identificar o número da porta que a Instância do SQL Server está escutando usando 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: SQL Server Configuration Manager

Etapa 1. Clique em Iniciar> Todos os programas> Microsoft SQL Server 2012> Ferramentas de configuração> SQL Server Configuration Manager

Etapa 2. Vá para SQL Server Configuration Manager> SQL Server Network Configuration> Protocols for

Etapa 3. Clique com o botão direito em TCP / IP e selecione Propriedades

insira a descrição da imagem aqui

Etapa 4. Na caixa de diálogo Propriedades de TCP / IP, vá para a guia Endereços IP e role para baixo até o grupo IPAll.

insira a descrição da imagem aqui

Se o SQL Server for configurado para ser executado em uma porta estática, ele estará disponível na caixa de texto Porta TCP, e se estiver configurado na porta dinâmica, a porta atual estará disponível na caixa de texto Portas dinâmicas TCP. Aqui, minha instância está escutando na porta número 61499.

Os outros métodos você pode encontrar aqui: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

irmãos 28
fonte
1
Funcionou para mim. Eu tentei as propriedades TCP / IP da Configuração do SQL Native Client e que estava retornando o padrão 1433. Mas quando eu verifiquei as portas TCP Dinâmicas da Configuração de Rede do SQL Server. Descobri que a porta é 67244. E depois disso, consegui me conectar com êxito a essa porta. +1
Reuben
17

Eu me deparei com isso porque tive problemas ao criar uma conexão remota e não conseguia entender por que configurar a porta 1433 no firewall não estava funcionando. Finalmente tenho a imagem completa agora, então achei que deveria compartilhar.

Em primeiro lugar, é necessário habilitar "TCP / IP" usando o SQL Server Configuration Manager em Protocols for SQLEXPRESS!

Quando uma instância nomeada é usada ("SQLExpress" neste caso), ela escuta em uma porta dinâmica. Para encontrar essa porta dinâmica, você tem algumas opções; para nomear alguns:

  • verificação ERRORLOGdo SQL Server localizado em '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log'(dentro você encontrará uma linha semelhante a esta: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]"-> então 51118 é a porta dinâmica neste caso.

  • verificando o registro:, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAllpara o meu caso TcpDynamicPorts=51118.

    Editar : {MSSQL instance name}é algo como:, MSSQL10_50.SQLEXPRESSnão sóSQLEXPRESS

Claro, permitir essa porta TCP no firewall e criar uma conexão remota passando em: "x.x.x.x,51118"(onde xxxx é o ip do servidor) já resolve neste ponto.

Mas então eu queria me conectar remotamente passando o nome da instância (por exemplo x.x.x.x\SQLExpress:). É quando o serviço SQL Browser entra em ação. Esta é a unidade que resolve o nome da instância na porta 51118. O serviço SQL Browser escuta na porta UDP 1434 (padrão e estática), então tive que permitir isso também no firewall do servidor.

Para estender um pouco a resposta real: se outra pessoa não gosta de portas dinâmicas e quer uma porta estática para sua instância do SQL Server, tente este link .

Aprendiz
fonte
1
1 para o serviço SQL Browser. Esta é a chave para o funcionamento do SQL Express com números de porta
peterG
11

No log do ERROLOG para uma linha como abaixo. Se você não o vir, o SQL Server não está habilitado para acesso remoto ou simplesmente não é via TCP. Você pode alterar isso por meio do SQL Server Configuration Manager.

Server is listening on [ 192.128.3.2 <ipv4> 1433].
Mrdenny
fonte
Não vejo esse log, mas no SQL Server Management Studio em Conexões, "Permitir conexões remotas a este servidor" está marcado. Portanto, meu entendimento é que a conexão remota é permitida.
royalghost
@royal: Além de 'permitir conexões remotas', você também deve habilitar o protocolo TCP. No momento, o servidor provavelmente está ouvindo apenas NP
Remus Rusanu
veja a resposta abaixo de @morteza para ler o log via consulta SQL xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
8

Resolvi o problema habilitando o TCP / IP usando o SQL Server Configuration Manager em Protocolos para SQLEXPRESS2008, reiniciei o serviço e agora o "Servidor está escutando" aparece no arquivo ERRORLOG

Lepez
fonte
8

Experimente (requer acesso a sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL
Tilo
fonte
3
FYI: se o servidor SQL não tiver uma conexão aberta, provavelmente não mostrará nada.
Tilo,
6
USE master
GO
xp_readerrorlog 0, 1, N'Server is listening on', 'any', NULL, NULL, N'asc' 
GO

[Identifique a porta usada pela instância nomeada do mecanismo de banco de dados do SQL Server lendo logs de erros do SQL Server]

Morteza
fonte
1
obrigado boa dica Morteza, recebo um erro ao usar o acima no SQL2012, mas o seguinte é suficiente para minhas necessidades: XP_READERRORLOG 0, 1, N'Server is listening '
mattpm
Copie esse erro de obtenção com sua consulta, mas funciona, xp_readerrorlog 0, 1, N'Server is listening on'
Tilo
6

Você pode usar estes dois comandos: tasklistenetstat -oan

Tasklist.exeé semelhante, taskmgr.exemas em modo de texto.

Com tasklist.exeou taskmgr.exevocê pode obter um PID desqlservr.exe

Com netstat -oan, ele mostra um PID de conexã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

Demestrestalk
fonte
5

Eu 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
Rubens
fonte
Não sei por que isso foi rejeitado, não dá a resposta imediata, mas dá a você a resposta e muuuuito mais. Adicionando isso à minha lista de consultas úteis.
Tony
gosto muito da consulta, também parece não mostrar se nenhuma conexão é aberta / estabelecida.
Tilo
4

Isso também pode ser feito por meio de uma varredura de porta, que é o único método possível se você não tiver acesso de administrador a um servidor remoto.

Usar o Nmap ( http://nmap.org/zenmap/ ) para fazer uma "varredura TCP intensa" fornecerá 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

Observação importante: para testar com o analisador de consulta ou MS SQL Server Management Studio, você deve formar o nome do servidor e a porta de forma diferente do que normalmente faria para se conectar a uma porta, via HTTP por exemplo, usando uma vírgula em vez de dois pontos .

  • Nome do servidor Management Studio: 10.0.0.1,49843
  • String de conexão: Data Source=10.0.0.1,49843

Contudo

  • String de conexão JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE
Shane
fonte
1

Isso funciona para o SQL Server 2005 - 2012. Procure a identificação de evento = 26022 no log de erros em aplicativos. Isso mostrará o número da porta do servidor sql e também quais endereços IP têm permissão para acessar.

Mukus
fonte
1

Além do que está listado acima, tive que habilitar as portas TCP e UDP para que o SQLExpress se conectasse remotamente. Como tenho três instâncias diferentes em minha máquina de desenvolvimento, habilito 1430-1435para TCP e UDP.

D. Davidson
fonte