SQL Server 2005 имеет проблемы с подключением к веб-сайту, работающему на том же сервере - PullRequest
1 голос
/ 15 сентября 2008

Произошла ошибка при установлении соединения с сервером. При подключении к SQL Server 2005 этот сбой может быть вызван тем, что в настройках по умолчанию SQL Server не разрешает удаленные подключения. (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)

Здравствуйте, я новичок в разработке на SQL Server 2005. Я несколько лет работал с SQL Server 2000, но после выполнения обычных действий, которые я выполняю для подключения к серверу, я получаю это исключение на веб-сервере.

В Google есть несколько ссылок, которые указывают мне на возможные решения, но ни одна из них не решила мою проблему. Я внес изменения в диалоговом окне «Поверхность независимо от того, что ...» (Что, черт возьми, это такое? Почему SQL Server так сильно изменился? Это сейчас кажется таким сложным).

Я обеспечил правильную настройку SQL Server 2005 для разрешения входящих подключений на экземпляре сервера базы данных. Я также выбрал Автоматически в качестве типа запуска для автоматического запуска службы браузера SQL Server при каждом запуске системы. И нет, брандмауэр не работает.

Я попытался изменить строку подключения для подключения через порт, для подключения с использованием IP-адреса, для подключения с использованием имени экземпляра ...

Кажется, ничего не работает, я все еще получаю ту же ошибку. Любой намек?

Отвечая на вопросы людей: Да, я могу подключиться с помощью студии управления с другого компьютера. Да, я уверен, что он настроен на прием локальных и удаленных TCP / IP и именованных каналов. Да, я перезапустил сервер.

Я использую безопасность в смешанном режиме, которую я уже включил. Я уже включил пользователя sa. Я могу подключиться к базе данных с помощью файла .udl, и я проверил, что моя строка подключения в порядке. Я могу подключиться к базе данных, используя клиентские инструменты DBArtisan и SQL Server. Я могу сделать это как на сервере, так и на другой машине. Даже со всем этим ...

Веб-сайт по-прежнему не может подключиться.

Новое обновление ... Я весь день боролся с этой проблемой и до сих пор не выяснил причину. Кажется, что сообщение об ошибке, которое я отправил, является общей ошибкой, которую выдает .net, когда не может подключиться. Я поместил мусор в строку подключения (набрав серверы, которые не существуют), и все еще получаю ту же ошибку.

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

connectionString = "Интегрированная безопасность = SSPI; Источник данных = СЕРВЕР; Начальный каталог = дБ; Сетевая библиотека = DBMSSOCN;"

connectionString = "Источник данных = СЕРВЕР; Исходный каталог = дБ; Идентификатор пользователя = sa; Пароль = xxxxx;"

connectionString = "Источник данных = SERVER \ MSSQLSERVER; Начальный каталог = db; Идентификатор пользователя = sa; Пароль = xxxxx;"

Я попытался зарегистрировать экземпляр сервера sql с помощью какой-то странной команды. Я нашел это здесь: http://kb.discountasp.net/article.aspx?id=1041 Для этого я использовал инструмент aspnet_regsql.exe. Это все еще не работает ...

Я также знаю, что на сервере установлена ​​последняя версия MDAC. Единственное, на что я подозреваю, это то, что на сервере есть два ядра СУБД: SERVER и server \ sqlexpress

Это как-то связано с проблемой?

Ответы [ 9 ]

1 голос
/ 15 сентября 2008

Единственное, на что я подозреваю, это то, что на сервере есть два ядра СУБД: SERVER и server \ sqlexpress

Я думаю, что это источник проблемы. К какому из них вы собираетесь подключиться? Вам необходимо указать «экземпляр», к которому вы подключаетесь.

Предполагая, что вы намереваетесь подключиться к экземпляру SERVER, строка подключения должна выглядеть следующим образом (при условии имени экземпляра по умолчанию):

Источник данных = YOURSERVER \ MSSQLSERVER ; Исходный каталог = дБ; ID пользователя = sa; Пароль = ххххх;

Или для sql express строка подключения выглядит следующим образом: Источник данных = YOURSERVER \ sqlexpress ; Исходный каталог = дБ; ID пользователя = sa; Password = ххххх;

0 голосов
/ 16 сентября 2008

Я исправил проблему со связью. Проблема была в моем заявлении. Причиной проблемы было то, что строка соединения с базой данных разработки (а не рабочей) была жестко закодирована одним из диалоговых окон, генерирующих наборы данных. В этом диалоговом окне строка подключения помещается как в файл web.config, так и в скрытый файл исходного кода с именем «Settings.settings.cs». Проблема была решена путем исправления строки подключения в правильном месте.

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

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

Если это не сработает, проверьте трассировку стека, найдите код в вашем приложении, установите точку останова и изучите все свойства строки подключения. По крайней мере, так я это решил.

0 голосов
/ 15 сентября 2008

По приглашению делает:

osql -E -S

... получить> приглашение?

0 голосов
/ 15 сентября 2008

Вы пытались указать имя экземпляра в строке подключения? Очевидно, что sql server express, в частности, привередлив в отношении имени экземпляра.

Я также начал возиться с диспетчером конфигурации SQL Server. Итак, вы щелкнули «Конфигурация сети SQL Server 2005», а затем посмотрели «Протоколы для имя экземпляра »? А вы включили TCP / IP и именованные каналы?

Вы также просматривали «Конфигурация собственного клиента SQL» -> «Клиентские протоколы» и видите, что там также включены TCP / IP и именованные каналы?

Используя инструмент настройки контактной зоны SQL Server 2005, щелкните «Конфигурация контактной зоны для служб и подключений», затем в разделе «Компонент базы данных» -> «Удаленные подключения», что выбрано? Поскольку оказывается, что вы пытаетесь подключиться с использованием именованных каналов, вам необходимо убедиться, что выбраны «Локальные и удаленные подключения» и «использование как tcp / ip, так и именованных каналов».

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

И мой последний совет. Отойди от этого на некоторое время и отвлекись от этого на несколько минут. Когда вы ныряете обратно, вы можете найти что-то, что вы пропустили или упустили раньше.

0 голосов
/ 15 сентября 2008

Исходя из ошибки, похоже, что код пытается подключиться, используя именованные каналы, а не TCPIP. На самом деле вам может понадобиться указать в строке подключения, что провайдер sql должен подключиться с помощью tcpip, поэтому строка подключения должна выглядеть следующим образом.

Использование встроенной аутентификации (windows):

Комплексная безопасность = SSPI; Источник данных = SERVERNAME ; Исходный каталог = DATABASENAME ; Сетевая библиотека = DBMSSOCN ;

Использование аутентификации SQL:

UID = USERNAME ; PWD = ПАРОЛЬ ; Источник данных = SERVERNAME ; Исходный каталог = DATABASENAME ; Сетевая библиотека = DBMSSOCN ;

Я видел нечто похожее на то, что произошло раньше, когда по какой-то причине «именованные каналы» по умолчанию используются в качестве уровня транспорта / соединения, тем более что и веб-приложение, и сервер sql работают на одном компьютере. Я обычно всегда использую tcpip в качестве транспортной или сетевой библиотеки.

Другой способ устранения неполадок - использование UDL (или файла канала передачи данных) для устранения неполадок в соединении. Это позволяет переключаться между поставщиками соединений (ODBC, OLEDB и т. Д.) И устанавливать другие параметры подключения.

  1. Щелкните правой кнопкой мыши на рабочем столе и выберите новый -> текстовый документ.
  2. Переименуйте файл * .txt в TestConnect.udl (имя не имеет значения, просто необходимо расширение .udl). Вы должны увидеть, как значок изменится с значка текстового файла на значок, показывающий компьютер поверх сетки данных, или что-то в этом роде (другими словами, в окнах должен быть значок для него.).
  3. Теперь дважды щелкните файл, и вы увидите апплет «Свойства связи с данными».
  4. Перейдите на вкладку «Поставщик», и вы увидите список различных поставщиков подключений. Я бы начал с выбора «Поставщик Microsoft OLE DB для SQL Server». Мы можем использовать это, чтобы подтвердить, что OLE DB может подключаться или нет.
  5. Нажмите «Далее» и введите имя сервера или IP-адрес. Выберите встроенную безопасность Windows NT. (Вы всегда можете вернуться и изменить его на использование имени входа sql.) В этот момент вы можете нажать «Проверить соединение». Если соединение установлено успешно, выберите имя базы данных из выпадающего списка.
  6. Наконец, если соединение не удается, выберите вкладку «Все», а затем найдите «Сетевая библиотека» и измените ее значение, установив для него значение «DBMSSOCN».
  7. Вернитесь на вкладку подключения и снова нажмите «Проверить подключение».
  8. Повторите шаги 4 и 5 на этот раз с выбранным «Собственным клиентом SQL».

Надеюсь, это поможет.

0 голосов
/ 15 сентября 2008

Попробуйте переустановить последнюю версию MDAC на сервере. Однажды у меня была похожая проблема, и это решило ее.

[http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=en][1]

0 голосов
/ 15 сентября 2008

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

0 голосов
/ 15 сентября 2008

Перепроверьте конфигурацию поверхности и убедитесь, что соединения TCP / IP разрешены.

0 голосов
/ 15 сентября 2008

Можно ли подключиться к SQL Server через Management Studio с другого компьютера? Это может помочь вам определить, является ли это конфигурацией SQL Server или конфигурацией строки подключения.

...