Проблема с портом именованного экземпляра SQL Server 2005

У меня есть 4 разных именованных экземпляра SQL Server 2005 на одном сервере (в целях тестирования). На сервере нет экземпляра по умолчанию.

Поскольку в конечном итоге мне потребуется разрешить связь с этими экземплярами через брандмауэр, я установил порты каждого экземпляра, статически прослушивающие все IP-адреса сервера.

Редактировать: TCP / IP, общая память и именованные каналы включены. VIA отключен. Порты статически настроены для всех IP-адресов по протоколу TCP / IP, и каждый именованный экземпляр использует отдельный порт.

У меня также работает служба SQLBrowser, и все экземпляры настроены на разрешение удаленных подключений.

Один экземпляр настроен на порт по умолчанию (1433), и он работает нормально.

Однако другие экземпляры ведут себя очень странно. Когда я подключаюсь к ним с помощью Sql Server Management Studio в сети (так что я еще даже не перехожу через брандмауэр), студия подключается без жалоб. Однако, как только я пытаюсь расширить список базы данных для экземпляра, обновить экземпляр или что-то еще, я получаю следующую ошибку:

НАЗВАНИЕ: Microsoft SQL Server Management Studio


Не удалось получить данные для этого запроса. (Microsoft.SqlServer.SmoEnum)

Для получения справки щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476


ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Не удалось подключиться к серверу. (Microsoft.SqlServer.ConnectionInfo)


Соединение с сервером было успешно установлено, но при входе в систему произошла ошибка. (поставщик: поставщик именованных каналов, ошибка: 0 - на другом конце канала нет процесса.) (Microsoft SQL Server, ошибка: 233)

Для получения справки щелкните: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=233&LinkId=20476


Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
8 830
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Попробуйте включить связь TCP / IP с экземплярами SQL-сервера. Если вы в конечном итоге собираетесь пройти через брандмауэр, вы, вероятно, в любом случае захотите использовать TCP / IP вместо именованных каналов.

Попробуйте использовать разные порты TCP / IP для каждого экземпляра на сервере. Вам нужно будет войти в диспетчер конфигурации SQL Server, чтобы изменить эти параметры. В TCP / IP вы можете изменить номера портов, а затем использовать их в строке подключения или в SQL Management Studio при подключении.

Из любопытства, зачем вам, например, сервер? Можете ли вы использовать один экземпляр и вместо этого иметь несколько баз данных? Если вы используете другие экземпляры для разработки или тестирования, возможно, вы захотите перенести их в другой ящик.

Ответ принят как подходящий

The first thing to do would be to try adding the prefix np: or tcp: (for either Named Pipes or TCP/IP) before the name of the server. For tcp/ip, you can also try adding the port number (,1433) after the name of the server. If this is not the default instance, you must add the name of the instance after the name of the server; for example:

> sqlcmd -S
> tcp:NameOfTheServer\sqlexpress,1433

Обновлено: удалена ссылка на источник, так как теперь это мертвая ссылка

Ответ Бофе сработал, так что это указывало на то, что с портами что-то не так.

Оказывается, в настройках TCP / IP для именованных экземпляров я прослушал все, установленный для протокола, а затем установил статический порт для IPAll, но динамический порт для IP1. Я предполагал, что, поскольку IP1 был отключен, мне не нужно было об этом беспокоиться, но, очевидно, если у вас установлен Listen All, то свойство enabled для IP1 игнорируется. Итак, наличие только одного IP-адреса на сервере и настройка динамических портов IP1 и статических портов IPAll вызвали какой-то странный конфликт.

Чтобы решить эту проблему, я просто установил IP1 на использование того же статического порта, что и IPAll, включил IP1, перезагрузил сервер, и все заработало так, как должно, без необходимости явно указывать порт в строке подключения.

Другие вопросы по теме