2010-08-31 3 views
5

У меня проблемы с подключением к моему серверу базы данных. Сервер базы данных не является локальным, я подключен через его IP-адрес.Не удалось открыть подключение к SQL Server

Он отлично работает в моей машине разработки. После публикации веб-сайта на моем сервере он не может подключиться к моему серверу базы данных.

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

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

ответ

1

Я попытаюсь идти два на два на психической отладку на сегодняшний день ...

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

+1

Ваша картина заставляет вас выглядеть как есть хороший шанс, ваше психическое. –

+0

Я изменил это добавление к соединению strng Integrated Security = SSPI; и он не работает – nezdet

+0

@nezdet: ваше изменение фактически добавило проверку подлинности Windows явно. Проблема, которую вы испытываете, если это то, что предлагает Джош, сохранится, если вы не измените учетные данные, под которыми работает ваш веб-сервер, к набору, имеющему доступ к базе данных (например, ваш собственный, хотя вы всегда должны пытаться использовать службу учетные записи для веб-серверов. –

1

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

  • Убедитесь, что любые брандмауэры как на серверах БД, так и на приложениях позволяют трафик на порту (1433).
  • Убедитесь, что вы можете выполнить ping или tracert с обеих машин.
+0

pinging работает с обоих серверов, Я закрыл брандмауэр на сервере публикации, – nezdet

4

У меня часто возникала эта проблема. В основном это из-за двух проблем.

  1. Открыть диспетчер конфигурации SQL Server.

    • Проверьте, поддерживает ли конфигурация сети SQL Server TCP/IP, если она отключена, включите ее. , например. SqlServer 2005 Конфигурация сети, протоколы для SQLEXPRESS
  2. Откройте Управление SQL Server Studio

    • Нажмите на Свойства SQL Server (щелкните правой кнопкой мыши на имени сервера и выберите свойства).
    • После этого выберите страницу «Безопасность» и установите проверку на «SQL Server и Windows Authentication mode».

Это все.

+0

Это уже было сделано: - TCP/IP включен - и SQL Server и «Windows Aut Также проверяется режим хентирования, – nezdet

+0

Подключение от моего клиента отлично работает, но теперь с сервера. Я не знаю, почему – nezdet

+0

Возможно, на сервере клиентский протокол не разрешает TCP/IP. Вы также можете проверить это на своем сервере с помощью Диспетчера конфигурации SQL Server. Таким образом, вам нужно искать только «Конфигурация клиентского клиента SQL Server/Client Protocols» – BitKFu

0

Это ваш первый раз, когда вы публикуете свой сайт на веб-сервере? Если это так, вы уверены, что правильно установили строку подключения?

Вам необходимо создать логин (проклинать пароль для этого) и IP-адрес этого SQL на веб-сервере.

Для этого вам нужен IP-адрес хоста сервера sql, имени базы данных, UId, Pwd.

+0

Это не первый раз, у меня есть некоторые другие приложения, подключенные локально к базе данных, это приложение подключается к серверу, который не находится в локальной сети, – nezdet

0

Я согласен с тем, что это звучит как проблема с сетью, а не проблема безопасности.

Удаленный доступ к веб-серверу и ping серверу БД по IP-адресу.Если это не работает, ваш сервер не может видеть сервер БД через этот адрес (разные подсети, некорректная настройка брандмауэра/прокси и т. Д.). Может существовать адрес прокси-сервера, который вы должны использовать для доступа к серверу БД с веб-сервера, или ваш веб-сервер также может быть шлюзом, и IIS не знает, как искать сервер БД в локальной сети. Если это работает, компьютеры могут не разговаривать на одном и том же порту, или брандмауэр может блокировать этот порт, выходящий из веб-сервера.

0

Я потратил часы, пытаясь подключиться к SQL-серверу, используя sqlcmd. Я отключил свой брандмауэр, проверил все ip, перечисленные в разделе «Протоколы для SQLEXPRESS», отредактировал файл моих хостов. Я попытался использовать разные ips и машинное имя для подключения к серверу. Но ни одна работа не работала. После нескольких часов расследования я узнал, что сделал совершенно тупую ошибку, из-за которой я не мог подключиться. Я хочу напомнить людям, что строка подключения не чувствительна к регистру. Но вариант есть !! то, что я сделал, я поставил

sqlcmd -s .\sqlserver

Но правильная строка

sqlcmd -S .\sqlserver so watch out, people

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