Olá pessoal,
Bom dia!
Neste post vou mostrar como identificar a porta utilizada pela instância do SQL Server. Como vocês devem saber, a porta padrão para conexões TCP/IP é a 1433 e para conexões UDP é a 1434. Entretanto, se você possui mais de uma instalação no mesmo servidor, será possível utilizar essas portas apenas para uma das instâncias, fazendo com que seja interessante identificarmos essa informação.
Identificando a porta lendo os logs de erro do SQL Server
O log de erro do SQL Server é um ótimo lugar para saber o que acontece com a instância do SQL Server. Utilizando a stored procedure estendida xp_readerrorlog, podemos facilmente obter essa informação.
1 |
EXEC master.dbo.xp_readerrorlog 0, 1, N'Server is listening on', 'ipv', NULL, NULL, N'asc' |
Identificando a porta por views de catálogo (DMV)
Uma outra forma rápida de obter a informação é consultando views de catálogo do sistema (DMV’s), conforme exemplos abaixo:
1 2 3 |
SELECT TOP 1 local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL |
Utilizando a DMV sys.dm_server_registry (Somente a partir do SQL Server 2008 R2):
1 2 3 4 5 |
SELECT value_data FROM sys.dm_server_registry WHERE registry_key LIKE '%IPALL%' AND value_name LIKE 'Tcp%Port%' AND NULLIF(value_data, '') IS NOT NULL |
Identificando a porta via registro do Windows
Uma alternativa tão prática quanto a primeira, seria realizar uma Query T-SQL consultando os dados do registro do Windows através da stored procedure estendida xp_regread.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
DECLARE @Instancia NVARCHAR(50) DECLARE @Porta VARCHAR(100) DECLARE @RegKey_Instancia NVARCHAR(500) DECLARE @RegKey NVARCHAR(500) SET @Instancia = CONVERT(NVARCHAR, ISNULL(SERVERPROPERTY('INSTANCENAME'), 'MSSQLSERVER')) -- SQL Server 2000 IF ( SELECT CONVERT( VARCHAR (1), (SERVERPROPERTY ('ProductVersion'))) ) = 8 BEGIN IF (@Instancia = 'MSSQLSERVER') SET @RegKey = 'SOFTWARE\Microsoft\' + @Instancia + '\MSSQLServer\SuperSocketNetLib\TCP\' ELSE SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @Instancia + '\MSSQLServer\SuperSocketNetLib\TCP\' EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @RegKey, @value_name = 'TcpPort', @value = @Porta OUTPUT SELECT @@SERVERNAME AS Servidor, @Instancia AS Instancia, @Porta AS Porta END -- SQL Server 2005 ou superiores IF ( SELECT CONVERT( VARCHAR (1), (SERVERPROPERTY ('ProductVersion'))) ) <> 8 BEGIN SET @RegKey_Instancia = 'SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL' EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @RegKey_Instancia, @value_name = @Instancia, @value = @Porta OUTPUT SET @RegKey = 'SOFTWARE\Microsoft\Microsoft SQL Server\' + @Porta + '\MSSQLServer\SuperSocketNetLib\TCP\IPAll' EXEC master.dbo.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE', @key = @RegKey, @value_name = 'TcpPort', @value = @Porta OUTPUT SELECT @@SERVERNAME AS Servidor, @Instancia AS Instancia, @Porta AS Porta END |
Identificando a porta com o SQL Server Configuration Manager
Uma outra alternativa para isso, caso você tenha acesso ao servidor, é utilizando o SQL Server Configuration Manager.
Para abrir esse utilitário, basta utilizar o Menu Iniciar > Programas > Microsoft SQL Server 2008 R2 (Ou a sua versão) > Configuration Tools e abrir o aplicativo SQL Server Configuration Manager.
Uma alternativa mais rápida é abrir o menu Executar, e digitar SQLServerManager10.msc (o 10 representa a versão do seu SQL Server)
Identificando a porta com o Visualizador de Eventos do Servidor
Por fim, podemos verificar a porta utilizada pela nossa instância consultando o log de eventos do tipo Application.
Para abrir esse aplicativo, você deve ir em: Painel de Controle > Ferramentas Administrativas > Visualizador de Eventos ou então abrir o menu Executar e digitar: eventvwr.msc
No painel da esquerda, expanda o menu “Log do Windows” e depois marque a opção “Aplicativo”. No painel da direita, clique na opção “Filtrar log atual” e filtre pelo Id do evento 26022
And that's it, folks!
Até a próxima!
muito obrigada me salvou mais 1 vez \o///
muito obrigada, me salvou mais uma vez \o//
Gostaria de fazer a alteração via prompt de comando, teria como ?
Alteração da Porta TCP Dinâmica*
Olá dirceu, boa tarde! Eu executei o Xp_regread e o resultado veio assim:
Servidor Instancia Porta
DC14SQL14\INST01 INST01 NULL
Não tenho acesso ao Master do banco, então não consigo das outras formas…
Alguma outra idéia?
Excelente post, ajudou bastante.
Obrigado ?