Service Broker требуется порт - PullRequest
       4

Service Broker требуется порт

0 голосов
/ 29 ноября 2011

Кто-нибудь знает, существует ли порт, который обязательно должен быть открыт на сервере SQL, чтобы разрешить трафик брокера служб? Мы проверяли, что происходит, когда вы закрываете все порты на сервере SQL, кроме (1433, 445, 3389), и уведомление о запросе все еще работает. У нас сложилось впечатление, что 4022 должен быть открыт для сервисного брокера, чтобы мы работали по умолчанию с портом прослушивания.

Существует ли системное представление SQL, показывающее, через какой порт взаимодействует сервисный брокер?

Существует ли команда для прекращения всех активных уведомлений о запросах в базе данных, чтобы база данных могла быть отброшена?

Спасибо

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Если ваша архитектура компонента Service Broker передает сообщения между серверами (конечными точками), тогда ей потребуются порты, отличные от обычных SQL.

Если клиентский код, такой как уведомления о запросах, обращается к компоненту Service Broker, то он использует операторы SQL(с некоторым новым синтаксисом) через стандартное соединение SQL, и эта часть не использует никаких дополнительных портов.

3 голосов
/ 29 ноября 2011

Уведомление о запросе не требует конечной точки компонента Service Broker, поскольку оно всегда доставляет сообщения локально, в ту же БД, откуда вы начали отправлять уведомления. Хотя настройка QN для доставки уведомлений на удаленный компьютер возможна , возможна , но в основном это не слышно. См. Таинственное Уведомление .

Что касается вопроса: компонент Service Broker требует, чтобы был открыт только настроенный порт конечной точки. Вы можете увидеть порт прослушивания в sys.tcp_endpoints. Если настроенная аутентификация - Windows, тогда порты, необходимые для Kerberos / NTLM (135,? 389), также требуются для аутентификации соединений SSB. Обратите внимание, что порт SMB (445) не , необходимый для SSB. Если настроенная аутентификация конечной точки SSB является сертификатом, то дополнительный порт не требуется. См. Как работает аутентификация на основе сертификатов .

3 голосов
/ 29 ноября 2011

С Как: активировать сеть Service Broker (Transact-SQL) :

Компонент Service Broker не отправляет и не получает сообщения по сети дефолт. Чтобы активировать сеть Service Broker в экземпляре, создайте конечная точка для Service Broker.

Когда вы создаете конечную точку, вы специально назначаете порт для использования:

CREATE ENDPOINT BrokerEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4037 )
    FOR SERVICE_BROKER ( AUTHENTICATION = WINDOWS );

Порт 4022 используется, когда компонент Service Broker связывается с другими экземплярами брокера. Как вы используете Service Broker? Если вся работа является внутренней для вашей базы данных, то ей никогда не нужно использовать конечную точку TCP.

...