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

У меня есть простой веб-сайт mvc (с использованием интернет-шаблона VS) на сайтах Azure, который общается с базой данных SQL Azure в том же центре обработки данных. База данных в это время просто для встроенного поставщика SimpleMembership. Я уже переключился с mdf-файла App_Data на Azure SQL по умолчанию. Работает нормально, но иногда через некоторое время это даст:

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

с длинным сообщением:

Ошибка автоматического создания файла базы данных SQLExpress:

Строка подключения указывает локальный экземпляр Sql Server Express с использованием расположения базы данных в каталоге приложения App_Data. Поставщик попытался автоматически создать базу данных служб приложений, поскольку поставщик определил, что база данных не существует. Следующие требования к конфигурации необходимы для успешной проверки существования базы данных служб приложений и автоматического создания базы данных служб приложений:

Но у меня нет строки подключения с использованием SQL Server Express!

Перезапуск веб-сайта немедленно не устраняет ошибку.

Ничего не меняя и не перезагружая сайт через 15 минут дают:

502 - веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера.

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

Ранее я мог вернуть сайт в рабочее состояние, просто повторно опубликовав VS. Но в течение последнего часа я пробовал и пытался, и я не могу заставить веб-сайт работать снова.

В чем действительно проблема SQL Server Express?

Мой раздел строки подключения содержит:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Server=tcp:sabl6h4---.database.windows.net,1433;Database=MVC;User ID=test@sabl6h4---;Password=----;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;" providerName="System.Data.SqlClient" />
  <add name="Entities" connectionString="metadata=res://*/Data.Model1.csdl|res://*/Data.Model1.ssdl|res://*/Data.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=sabl6h4---.database.windows.net;initial catalog=MVC;user id=test;password=----;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
 </connectionStrings>

Просто чтобы быть уверенным, я скопировал и вставил sabl6h4---.database.windows.net в SSMS и подключился с помощью теста входа в систему, и он без проблем открыл базу данных.


Один день спустя: я создал новый сайт Azure и опубликовал точно такой же проект и тот же web.config. Работает нормально без проблем. Через несколько минут произошла точно такая же ошибка!


Еще три часа спустя: пошли на обед, вернулись, нажали кнопку "Обновить" в браузере, и веб-сайт снова заработал. Я убежден, что кто-то дурачится с настройками на заднем конце.

2 ответа

Решение

Добавить <clear/> элемент как первый элемент в элементе connectionstrings, чтобы гарантировать, что строки не наследуются. Кроме того, я предполагаю, что для вашей базы данных SQL Azure установлены правильные настройки брандмауэра, позволяющие указать ваш IP-адрес, на котором развернут код ASP.net?

У меня тоже была эта ошибка. Но в моем случае я не заметил, что строка подключения перезаписывалась мастером публикации. Я исправил проблему, перейдя на вкладку "Настройки" в мастере публикации и сняв флажок "Использовать эту строку подключения во время выполнения (обновить назначение web.config)"