Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
Путём различных настроек довёл SQL Server express 2008 (R2) под Windows server 2012 Foundation до странного состояния.

Каритнка с двух SSMS, Серверная локально и клиентская

Кроме того, когда локально при помощи SSMS выбираю в имени сервера <Обзор дальше> Локальные серверы, Компонент Database Engine Она мне показывает всё нормально: TRMSRV\RESTART, я это выбираю, указываю проверку подлинности, sa/пароль, а оно мне традиционное: (provider: Сетевые интерфейсы SQL, error: 26 - ошибка при обнаружении указанного сервера или экземпляра). При этом следов в логе не оставляет.
Но, если я укажу localhost, оно подключается и работает, но с различными ошибками.
Это всё происходит, когда оставлен единственный протокол TCP/IP. Если включить общую память, то на сервере всё локально замечательно работает.
Но это ещё не всё.

В обоих случаях, когда я пытаюсь подключиться с клиентской машины, Я вижу только TRMSRV а не TRMSRV\RESTART, замечательно к нему подключаюсь SSMS и работает всё без ошибок. Однако клиентское приложение не хочет подключаться без указания инстанса.
Когда клиентское приложение делает попытку подключиться, в логе остаются сообщения:

2014-08-04 18:15:02.25 Вход Ошибка: 17836, серьезность: 20, состояние: 17.
2014-08-04 18:15:02.25 Вход Length specified in network packet payload did not match number of bytes read; the connection has been closed. Please contact the vendor of the client library. [КЛИЕНТ: 192.168.0.240]

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

Сегодня всё, что касается SQL сервера сносил и ставил по-новой. Клиентское приложение тоже. Ничего не помогает.
Подайте идею, хотя бы на тему: почему на сервере виден инстанс, а на клиенте нет.

Как вообще можно управлять этими инстансами?
4 авг 14, 18:23    [16397923]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для именованного инстанса придется указывать имя инстанса при подключении.
4 авг 14, 18:28    [16397946]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
В том-то и беда, SSMS на клиенте подключается и работает только если имя инстанса не указываю. А Клиентское приложение так не работает, что в общем-то логично.
4 авг 14, 19:41    [16398216]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
ничего из описания непонятно, инстансов 2 или один?
картинку из Configuration Manager в студию!
если инстанс один, именованный экспресс, и к нему удается подключиться только когда не указано
имя инстанса, то это значит, что этот именованный усадили на стандартный порт 1433, и еще что браузер не запущен
4 авг 14, 21:45    [16398601]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
o-o
ничего из описания непонятно, инстансов 2 или один?
картинку из Configuration Manager в студию!
если инстанс один, именованный экспресс, и к нему удается подключиться только когда не указано
имя инстанса, то это значит, что этот именованный усадили на стандартный порт 1433, и еще что браузер не запущен


Вот, Очкарик, за что я люблю этот форум, так за то, что тут есть такие люди как ты. Всё ты отлично понял и дал тот ответ, ради которого я неделю своего времени потратил гугля проблему, читая другие форумы и, в конце концов написав сюда.

Да действительно проблема именно в этом. Действительно поменял 1433 на 1440 и мой единственный, одинокий инстанс стал на своё место на клиенте. Большое тебе за это спасибо.

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

К сообщению приложен файл. Размер - 113Kb
5 авг 14, 10:23    [16399719]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
EdGreen
Проблема очень в стиле майкрософта: вместо того, что бы обеспечивать совместимость версий -- потихоньку менять стандарты.

И какие же стандарты поменял майкрософт ?
Кто, кроме вас, назначил один и тот же порт двум разным экземплярам сервера ?
5 авг 14, 10:48    [16399866]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
Экземпляр один.

Просто, насколько я понял, если к серверу идёт обращение через порт 1433, то он виден не как SERVER\INSTANCE, а как одиночный сервер с именем SERVER. почему было не сделать, что бы он откликался и так и так для совместимости?

В результате Майкрософт свой же стандарт 1433 отодвинул в сторону без объяснений. По крайней мере я не нашёл никаких упоминаний про это ни в одном msdm.
5 авг 14, 12:24    [16400514]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
EdGreen
Просто, насколько я понял, если к серверу идёт обращение через порт 1433, то он виден не как SERVER\INSTANCE, а как одиночный сервер с именем SERVER.

Клиенту вообще пофиг именования.
Клиент соединяется по адресу и порту
Когда клиенту дается имя он начинает "приставать" к разным службам для ресолвинга имени в адрес и порт.
И у всех экземпляров на одной машине будет один адрес. Потому что имя машины у них одно и тоже
А порты у них могут и должны быть разные.
И если порт не задан или не удается его определить, то всегда используется порт по-умолчанию 1433.

Вы или кто-то до вас специально поменял порт именованного экземпляра на 1433.
Думаю, именно для того, чтобы клиент тупо коннектился по имени машины и тупо попадал не дефолтный порт.
5 авг 14, 12:32    [16400579]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
EdGreen,

не так.
(и, поди что, как этот вредина Glory написал, у вас 2 инстанса стоит.
вывешивайте картинку Configuration Manager-а)
для обращения к инстансу надо адрес и порт.
адрес он по имени компа разрешил и ок, а порт, если не указан, он ломится на 1433.
если же порт неизвестен, ибо динамический -- так по умолчанию для именованных -- то его надо спросить у браузера,
указав имя экземпляра, либо явно написать (вместо имени экземпляра, не совместно). дефолтовый 1433 при этом(при указанном имени экземпляра) не проверяется.
ну так раз вы задали имя именованного, он у браузера пошел спрашивать, на 1434 UDP.
а вот не был браузер запущен или у вас двое на одном порту(в смысле, прописаны. сесть-то кто-то не успел, кто второй), давайте смотреть. картинку давайте.
5 авг 14, 12:39    [16400657]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3618
Glory,
вообще-то SQL Server Express сам по дефолту ставится на 1433 порт и при этом сам ставится именованным!
В 2008м так 100%
5 авг 14, 12:41    [16400666]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ivan Durak
вообще-то SQL Server Express сам по дефолту ставится на 1433 порт и при этом сам ставится именованным!

так себе и представляю - куча экземпляров и все тупо по-умолчанию ставятся на порт 1433
5 авг 14, 12:46    [16400719]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
Не, по дефолту он ставился на какой-то из динамического диапазона (всё прально делал),
причём каждый раз на разный,
это я сам, переклинившись от лишнего гугления переставил всё на 1433.

К сообщению приложен файл. Размер - 69Kb
5 авг 14, 12:58    [16400786]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
EdGreen
Просто, насколько я понял, если к серверу идёт обращение через порт 1433, то он виден не как SERVER\INSTANCE, а как одиночный сервер с именем SERVER

1. Если в строке соединения явно прописан порт, то соединение будет устанавливаться на этот порт. Указан ли сервер в виде именованного экземпляра или нет, в данном случае роли не играет;
2. Если в строке соединения указан именованный экземпляр, то целевой порт будет запрошен у службы SQL Server Browser;
3. Если в строке соединения указано просто имя (адрес) сервера, соединение будет устанавливаться на дефолтный порт 1433.

Как виден сервер можно узнать запустив sqlcmd -L
5 авг 14, 13:14    [16400896]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
значит, браузер не был включен.
когда соединение по tcp/ip + указано имя экземпляра, он не лезет на 1433,
ну и раз браузер не дал имя порта, то соединение обломалось.

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

зато по shared memory ему вообще никого и ничего не надо, спокойно соединяется по имени.

меня сбил "неименованный" инстанс на самой первой картинке.
но это воспроизводимо:
лезем по shared memory, указываем просто имя компа.
на 1433 у меня сейчас сидит именованный и он же единственный запущенный сервер.
думаете, куда попадаем, НЕ УКАЗЫВАЯ имя экземпляра?
на того самого именованного, хотя студия его отображает как будто он дефолтный

К сообщению приложен файл. Размер - 58Kb
5 авг 14, 13:26    [16400995]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Для работы браузера, кстати, надо открывать UDP 1434. Может в этом проблема была, некоторые вирусные атаки лезут на этот порт и его перекрывают для всех протоколов.
5 авг 14, 13:36    [16401064]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
Дык на самом-то деле тему можно закрыть.
Проблема решилась переходом на другой порт, Браузер запустил,
теперь и студия и клиентское приложение конектятся к серверу в нормальном режиме с указанием инстанса.
И мне почти всё понятно.
Всё отлично.
Всем спасибо.

p.s. Ведь сглажу же!
5 авг 14, 16:55    [16402481]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
а мне вот стало интересно про отображение именованного/неименованного,
пришлось на комп соседа поставить именованный экспресс, на порт 1433
(на моем уже имеется все что можно, а хотелось чистый комп БЕЗ дефолтного экземпляра)
результат такой:
при запущенном браузере
sqlcmd -L выдает 2(два!!!) экземпляра, именованный и нет, хотя там всего один
(наверное, он лезет на 1433 и если кто-то отзывается, то его перечисляет под именем компа,
не удосуживаясь проверить, не он ли именованный)
+ я без проблем соединяюсь, хоть указав имя компа,
хоть, как и положено, комп\инстанс.

теперь останавливаю браузер.
sqlcmd -L больше ничего не выдает.
а студия продолжает соединяться, причем при любом обращении, хоть по имени компа,
хоть комп\инстанс.
причем как обратишься, так и показывает.
т.е. при обращении как к дефолтному в Object Explorer-e MS его подписывает без имени экземпляра как на картинке выше.
вот как мило иметь сервер на дефолтном порту

еще 1 эксперимент остлось поставить, но мне пока что мешают.
5 авг 14, 17:49    [16402769]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
все. эксперимент закончен.
из шарповой программы при выключенном браузере
подключаюсь только при указании имени компа
(сервер -- named instance -- на 1433, только этот случай рассматриваю)
если указать еще и имя экземпляра, то сразу:

Error detected: A network-related or instance-specific error occurred while esta
blishing a connection to SQL Server. The server was not found or was not accessi
ble. Verify that the instance name is correct and that SQL Server is configured
to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Erro
r Locating Server/Instance Specified)

при указании имени компа и порта название экземпляра не мешает и вообще игнорируется, зато
при отсутствии порта в явном виде, при выключенном браузере название экземпляра все портит,
порт 1433 не проверяется


так что проблема была в браузере.
не был запущен, скорее всего.

а вот почему студия при указании имени экземпляра и отсутствии запущенного браузера
все равно умудряется соединяться (no shared memory!), это надо спросить invm :)
5 авг 14, 18:47    [16402949]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
invm
2. Если в строке соединения указан именованный экземпляр, то целевой порт будет запрошен у службы SQL Server Browser;


у меня все сошлось по пунктам, и это тоже, но только не из студии.
студия все равно соединяется, по TCP, если даже указываю имя экземпляра и браузер остановлен.
закешировало оно что-то себе куда-то что-ли?
5 авг 14, 18:58    [16403001]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
o-o
закешировало оно что-то себе куда-то что-ли?
Похоже на то.
5 авг 14, 19:04    [16403015]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
EdGreen
Member

Откуда:
Сообщений: 53
Пытливый ум продолжает не давать покоя рукам шаловливым.

Посмотрел SqlCmd -L

Получилось прикольно. На клиенте показвает:

SERVER
SERVER/INSTANCE

Вот прям так, парой.

А на сервере, локально, долго висит, потом показывает пусто!
При этом и Студия и Клиентское приложение сервер видят и с ним работают.

На сервере включены Общая память и TCP/IP порт 1440 и у серверной службы и обоих клиентов 32 и 64
В общем-то жить оно мне не мешает, просто прикольно как-то.

Кстати, на одном из клиентов SqlCmd сказал, что он не является внутренней или внешней...
Кто, вообще SqlCmd ставит? Вроде бы на обоих клиентах стоит одинаковый набор софта.
6 авг 14, 11:00    [16405140]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
EdGreen
Вот прям так, парой.

Потому что в хелпе прямо так и сказано
Lists the locally configured server computers, and the names of the server computers that are broadcasting on the network.
Информация о локальных серверах просто читается из реестра

Сообщение было отредактировано: 6 авг 14, 11:03
6 авг 14, 11:03    [16405159]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
o-o
Guest
Glory, a какой ответ на вопрос: почему бродкастятся два инстанса, хотя там один всего?
по моему предположению
o-o
при запущенном браузере
sqlcmd -L выдает 2(два!!!) экземпляра, именованный и нет, хотя там всего один
(наверное, он лезет на 1433 и если кто-то отзывается, то его перечисляет под именем компа,
не удосуживаясь проверить, не он ли именованный
)

у меня не локально, а вполне себе с удаленного клиента видно 2 вместо одного
6 авг 14, 11:23    [16405335]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
Glory, a какой ответ на вопрос: почему бродкастятся два инстанса, хотя там один всего?

Не надо приписывать sqlcmd высокий интеллект
Она всего лишь делает broadcasting on the network и выводит _полученные_ ответы.
Она даже не проверяет, является ли что-то из полученного списка действительно sql server-ом.
6 авг 14, 11:27    [16405360]     Ответить | Цитировать Сообщить модератору
 Re: На сервере виден SERVER\INSTANCE на клиенте только SERVER из-за этого не работает  [new]
Glory
Member

Откуда:
Сообщений: 104760
А из локальных серверов, информация о которых читается из регистра, может оказаться так, что информация в регистре есть, а сервера нет или он не запущен.
6 авг 14, 11:30    [16405385]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить