2009-10-05 2 views
95

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

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

+0

Я обновляю вопрос с другими ресурсами я посмотрел на так, что у меня есть booksmarks из они и другие могут использовать их также. http://blogs.msdn.com/sql_protocols/archive/2008/11/05/tcp-listening-ports-and-endpoint-ports-behavior.aspx http://decipherinfosys.wordpress.com/2008/01/02/find-the-port-number-for-a-specific-sql-server-instance/ http://dumbledad.wordpress.com/2008/07/09/getting-processing-working-with -sql-server-2008/ – royalGhost

+0

Я использую вид TCP, чтобы увидеть порт, на котором он запущен. Я с удивлением вижу, что сервер принимает динамический порт вместо 1433 даже после установки его в качестве экземпляра по умолчанию. Я также не установил экспресс-версию и установил полную версию, после чего только я вижу процесс как sqlservr.exe: 5272. И мое предположение заключается в том, что он прослушивает порт 5272. – royalGhost

ответ

11

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

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

Я не вижу, чтобы этот журнал, но на SQL Server Management Studio в разделе «Разрешить удаленные подключения к этому серверу» был проверен. Следовательно, я понимаю, что удаленное соединение разрешено. – royalGhost

+0

@royal: кроме «разрешения удаленных подключений» вы также должны включить протокол TCP. Прямо сейчас сервер, вероятно, только прослушивает NP –

+0

см. Ответ ниже от @morteza, чтобы прочитать журнал с помощью SQL-запроса 'xp_readerrorlog 0, 1, N'Server прослушивает'' – Tilo

46

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

netstat -abn 

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

Редактировать: или TCPView.

+0

Можете ли вы сообщить мне, под каким именем MS SQL Server 2008 называется приложением? – royalGhost

+2

Должен быть sqlservr.exe (у меня нет возможности проверить его). – rslite

+1

Это сработало для меня. Номер порта находится на линии * выше * [sqlservr.exe]. – Zane

8

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

129

Нажмите на 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.

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

+0

На моем компьютере под управлением Windows 10 и с установленным SQL Server 2012 Express * Диспетчер конфигурации SQL Server * не указан в в меню «Пуск» Windows, но можно найти в оснастке * Управление компьютером * MMC в группе * Службы и приложения *. Динамический порт также не находится в разделе «Конфигурация собственного клиента SQL» (для меня это версия «11.0»), но в разделе * Конфигурация сети * SQL Server * (и на вкладке * IP-адреса * в * TCP/IP * окно свойств протокола, в самом низу, в настройке * TCP Dynamic Ports *). –

1

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

1

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

17

Я столкнулся с этим, потому что у меня просто возникли проблемы с созданием удаленного соединения и я не мог понять, почему настройка порта 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.

    Edit: {MSSQL instance name} что-то вроде: MSSQL10_50.SQLEXPRESS, не только SQLEXPRESS

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

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

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

+1

+1 для службы браузера SQL. Это ключ к тому, как работает SQL Express с номерами портов. – peterG

41

Вот 5 methodes я найдено:

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

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

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

+1

Работал для меня. Я попробовал свойства TCP/IP с конфигурацией собственного клиента SQL, и он возвращал значение по умолчанию 1433. Но когда я проверил порты TCP Dynamic из конфигурации сети SQL Server. Я обнаружил, что порт 67244. И после этого я смог успешно подключиться к этому порту. +1 – Reuben

4

Я использую следующий скрипт в 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 
+0

Не знаете, почему это было приостановлено, оно не дает немедленного ответа, но оно дает вам ответ плюс soooo намного больше. Добавьте это в список полезных запросов. – Tony

+0

, как и запрос, также, похоже, не отображается, если соединение открыто или установлено. – Tilo

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

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

+1

спасибо хороший совет Morteza, я получаю сообщение об ошибке, используя выше, на SQL2012, но для моих нужд достаточно: XP_READERRORLOG 0, 1, N'Server прослушивает ' – mattpm

+0

Добро пожаловать :) – Morteza

+0

Скопируйте, что получите ошибку с вашим запросом но это работает: «xp_readerrorlog 0, 1, N'Server прослушивает» – Tilo

8

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

+3

FYI: если SQL-сервер не имеет открытого соединения, он, скорее всего, ничего не покажет. – Tilo

+0

Если я даю команду выше, она ничего не показывает –

4

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

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

[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 Name Server: 10.0.0.1,49843
  • Строка подключения: Data Source=10.0.0.1,49843

однако

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

Вы можете использовать эти две команды: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

Смежные вопросы