Как найти порт для MS SQL Server 2008?

Я запускаю MS SQL Server 2008 на моем локальном компьютере. Я знаю, что порт по умолчанию - 1433, а некоторые - как он не прослушивает этот порт. SQL - это версия Express.

Я уже пробовал журнал, SQL Server Management Studio, реестр и расширенную хранимую процедуру для поиска порта. Но я не мог найти его. Пожалуйста, помогите мне. Спасибо.

Ответ 1

Нажмите кнопку Start в Windows. Перейдите к All Programs -> Microsoft SQL Server 2008 -> Configuration Tools -> SQL Server Configuration Manager

Нажмите SQL Native Client 10.0 Configuration -> Client Protocols -> TCP/IP двойной щелчок (щелкните правой кнопкой мыши Properties) на TCP/IP

Вы найдете Default Port 1433.

В зависимости от подключения номер порта может отличаться.

Ответ 2

Вы также можете посмотреть с помощью

netstat -abn

Он предоставляет порты с соответствующим приложением, которое позволяет им открывать.

Изменить: или TCPView.

Ответ 3

Вот 5 методов, которые я нашел:

  • Способ 1. Диспетчер конфигурации SQL Server
  • Способ 2: Просмотр событий Windows
  • Способ 3: журналы ошибок SQL Server
  • Способ 4: sys.dm_exec_connections DMV
  • Способ 5: чтение реестра с использованием xp_instance_regread

Способ 4: sys.dm_exec_connections DMV
Я думаю, что это почти самый простой способ...
DMV возвращают состояние сервера, которое можно использовать для мониторинга экземпляра SQL Server. Мы можем использовать DMV sys.dm_exec_connections, чтобы определить номер порта, который прослушивает экземпляр SQL Server, используя приведенный ниже код 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)

Способ 1. Диспетчер конфигурации SQL Server

Шаг 1. Нажмите Пуск> Все программы> Microsoft SQL Server 2012> Инструменты настройки> Диспетчер конфигурации SQL Server

Шаг 2. Перейдите в Диспетчер конфигурации SQL Server> Конфигурация сети SQL Server> Протоколы для

Шаг 3. Щелкните правой кнопкой мыши на TCP/IP и выберите Свойства

enter image description here

Шаг 4. В диалоговом окне свойств TCP/IP перейдите на вкладку IP-адреса и прокрутите вниз до группы IPAll.

enter image description here

Если SQL Server настроен для работы на статическом порту, он будет доступен в текстовом поле "Порт TCP", а если он настроен на динамический порт, то текущий порт будет доступен в текстовом поле "Динамические порты TCP". Здесь мой экземпляр прослушивает номер порта 61499.

Другие методы вы можете найти здесь: http://sqlandme.com/2013/05/01/sql-server-finding-tcp-port-number-sql-instance-is-listening-on/

Ответ 4

Я столкнулся с этим, потому что у меня просто возникли проблемы с созданием удаленного соединения и я не мог понять, почему настройка порта 1433 в брандмауэре не выполняет эту работу. У меня наконец есть полная картина, поэтому я подумал, что должен поделиться.

Прежде всего, необходимо включить "TCP/IP" с помощью диспетчера конфигурации SQL Server в разделе "Протоколы для SQLEXPRESS!

Когда используется именованный экземпляр (в данном случае SQLExpress), он будет прослушивать динамический порт. Чтобы найти этот динамический порт, у вас есть несколько вариантов; чтобы назвать несколько:

  • проверка ERRORLOG SQL Server, расположенного в '{MS SQL Server Path}\{MS SQL Server instance name}\MSSQL\Log' (внутри вы найдете строку, подобную этой: "2013-07-25 10:30:36.83 Server Server is listening on [ 'any' <ipv4> 51118]" → , поэтому 51118 - это динамический порт в этом случае.

  • проверка реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{MSSQL instance name}\MSSQLServer\SuperSocketNetLib\Tcp\IPAll, для моего случая TcpDynamicPorts=51118.

    Изменить: {MSSQL instance name} - это что-то вроде: MSSQL10_50.SQLEXPRESS, а не только SQLEXPRESS

Конечно, разрешение этого TCP-порта в брандмауэре и создание удаленного соединения путем передачи: "x.x.x.x,51118" (где x.x.x.x является сервером ip) уже решает его в этот момент.

Но потом я хотел удаленно подключиться, передав имя экземпляра (например: x.x.x.x\SQLExpress). Это когда запускается служба SQL Browser. Это единица, которая разрешает имя экземпляра в порт 51118. Служба SQL Browser прослушивает порт UDP 1434 (стандартный и статический), поэтому мне пришлось разрешить это также и в брандмауэре сервера.

Чтобы немного расширить фактический ответ: если кому-то не нравятся динамические порты и он хочет статический порт для своего экземпляра SQL Server, следует попробовать эту ссылку .

Ответ 5

В журнале ERROLOG для строки, как показано ниже. Если вы не видите этого, SQL Server не включен для удаленного доступа, или просто не через TCP. Вы можете изменить это с помощью диспетчера конфигурации SQL Server.

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

Ответ 6

Я решил проблему, включив TCP/IP с помощью диспетчера конфигурации SQL Server в разделе "Протоколы для SQLEXPRESS2008", я перезапустил службу и теперь "Сервер прослушивается" отображается в файле ERRORLOG

Ответ 7

Попробуйте (требуется доступ к sys.dm_exec_connections):

SELECT DISTINCT 
    local_tcp_port 
FROM sys.dm_exec_connections 
WHERE local_tcp_port IS NOT NULL

Ответ 8

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

[Идентифицировать порт, используемый именованным экземпляром ядра базы данных SQL Server, путем чтения журналов ошибок SQL Server]

Ответ 9

Вы можете использовать эти две команды: netstat -oan tasklist и netstat -oan

Tasklist.exe похож на taskmgr.exe но в текстовом режиме.

С помощью tasklist.exe или taskmgr.exe вы можете получить PID sqlservr.exe

С помощью netstat -oan он показывает PID соединения, и вы можете отфильтровать его.

Пример:

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

В этом примере порт SQLServer - 1280

Извлечено из: http://www.sysadmit.com/2016/03/mssql-ver-puerto-de-una-instancia.html

Ответ 10

Я использую следующий script в 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

Ответ 11

Это также можно выполнить с помощью сканирования портов, что является единственным возможным методом, если у вас нет доступа администратора к удаленному серверу.

Использование Nmap (http://nmap.org/zenmap/) для выполнения "Интенсивного сканирования TCP" даст вам результаты, подобные этому для all экземпляры на сервере:

[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

Важное примечание: Для тестирования с помощью анализатора запросов или MS SQL Server Management Studio вы должны сформировать имя и порт сервера иначе, чем обычно подключаетесь к порту, например, через HTTP, используя запятую вместо двоеточия.

  • Имя сервера Management Studio: 10.0.0.1,49843
  • Строка подключения: Data Source=10.0.0.1,49843

Однако

  • Строка подключения JDBC: jdbc:microsoft:sqlserver://10.0.0.1:49843;DatabaseName=DATABASE

Ответ 12

Это работает для SQL Server 2005 - 2012. Ищите идентификатор события = 26022 в журнале ошибок в приложениях. Это покажет номер порта сервера sql, а также доступ к IP-адресам.

Ответ 13

В дополнение к тому, что указано выше, мне пришлось подключать как TCP, так и UDP-порты для SQLExpress для удаленного подключения. Поскольку у меня есть три разных экземпляра на моей машине разработки, я включаю 1430-1435 для TCP и UDP.

Ответ 14

Решение PS, покроет все экземпляры на хосте + даст вам все адреса подключенных клиентов, все красиво и чисто:

ForEach ($SQL_Proc in Get-Process | Select-Object -Property ProcessName, Id | Where-Object {$_.ProcessName -like "*SQL*"})
{
    Get-NetTCPConnection | '
     Where-Object {$_.OwningProcess -eq $SQL_Proc.id} | '
      Select-Object -Property '
                                @{Label ="Process_Name";e={$SQL_Proc.ProcessName}}, '
                                @{Label ="Local_Address";e={$_.LocalAddress + ":" + $_.LocalPort }},  '
                                @{Label ="Remote_Address";e={$_.RemoteAddress + ":" + $_.RemotePort}}, State | '
      Format-Table
}