Как найти порт для 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
}