Intereting Posts
ошибка сетевых интерфейсов sql 26 – указатель на наличие ошибок / указанный экземпляр SQL Server Преобразование научной нотации (экспоненциальная нотация) в числовой DBCC shrinkfile дает ошибку Как перечислять пользовательские типы в базе данных SQL Server? Зачем вам когда-либо использовать count ('foo')? SQL Server выбирает случайный и не случайный Отдел с использованием Convert Sql Server Управление датами RODBC с сервера SQL SQL молча конвертирует int в varchar, но затем выдает ошибку, когда она встречается с varchar? Фактический план выполнения не обновляется после изменения хранимой процедуры базы данных Azure SQL SQL Server: заменить несколько вхождений слова одним SQL Server выбирает, где большинство столбцов соответствуют Как вы используете LEFT для столбца SQL Server NTEXT? SQL Server CTE для агрегирования затрат на каждом уровне иерархии SQL Server: разделите значение столбца на два отдельных столбца на основе другого столбца

Ошибка SQL Server после развертывания веб-приложения для отдельного веб-сервера

Я получаю следующую ошибку, как только я переношу приложение на свой собственный веб-сервер IIS Windows R2 R2, который находится на Prem. Сервер SQL 2014 DB находится в Azure. Брандмауэр отключен.

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

В дальнейшем:

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

Мои строки подключения НЕ указывайте локальную базу данных SQL Express:

<connectionStrings> <remove name ="NewUserToolContext"/> <remove name ="DefaultConnection"/> <add name="NewUserToolContext" connectionString="Data Source=SQLDBSERVERNAME;Initial Catalog=NewUserTool;Integrated Security=False;User Id = USERID;password = PASSWORD" providerName="System.Data.SqlClient" /> <add name="DefaultConnection" connectionString="Data Source=SQLDBSERVERNAME;Initial Catalog=NewUserTool;Integrated Security=False;User Id = USERID;password = PASSWORD" providerName="System.Data.SqlClient" /> </connectionStrings> 

У моего частичного представления _Layout есть код, который проверяет принадлежность к роли перед отображением определенных пунктов меню. После многих поисков по этому вопросу я нашел старые сообщения с 2012 года и один пост со времен 2013 года относительно своего рода инициализатора членства. Сообщение было невероятно расплывчатым и запутанным и не показалось ему актуальным. Он также ничего не объяснил, что делать, особенно не для MVC 6 Entity Framework в 2017 году. Я пробовал, я не мог найти ничего, о чем они говорили. Я начал изучать ASP.NET в прошлом году с помощью MVC 6.

Solutions Collecting From Web of "Ошибка SQL Server после развертывания веб-приложения для отдельного веб-сервера"

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

  1. В меню «Пуск» выберите «Выполнить», введите «WF.msc» и нажмите «ОК».
  2. В брандмауэре Windows с расширенной безопасностью в левой панели щелкните правой кнопкой мыши Правила входящих сообщений и выберите Новое правило в панели действий (в правом верхнем углу).
  3. В диалоговом окне «Тип правила» выберите «Порт» и нажмите «Далее».
  4. В диалоговом окне «Протокол и порты» выберите TCP. Выберите «Определенные локальные порты», а затем введите номер порта экземпляра Database Engine, по умолчанию SQL Server использует 1433. Введите 1433 и нажмите «Далее», чтобы завершить шаги.

Во-вторых, вам также необходимо включить порт 1433 в группе Network Security Group, который связан с вашей виртуальной машиной. Ниже приведены шаги для вашей справки.

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

введите описание изображения здесь

  1. Откройте NSG, нажмите кнопку [Добавить] на панели правил безопасности входящих сообщений

введите описание изображения здесь

  1. Добавьте правило следующим образом.

введите описание изображения здесь

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

Редактировать 2017/6/13

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

Кроме того, ваш веб-сервер размещен на Azure VM или на локальной машине?

Также попробуйте включить 32-битные приложения в расширенные настройки пула приложений.

введите описание изображения здесь

Некоторые другие вещи, которые вы могли бы попробовать.

  1. Проверьте, настроили ли вы динамическую защиту IP или ipSecurity в свой web.config. Он будет блокировать любые IP-адреса на основе вашей конфигурации.

  2. Вы пытались удалить все исходные файлы на тестовом сервере при развертывании своей версии?

введите описание изображения здесь

После того, как наконец выяснилось, что он не использует правильные строки подключения, которые я предоставил в LocalSqlServer web.config , а скорее в LocalSqlServer подключения LocalSqlServer в machine.config , я вскоре понял, что он использует это, потому что на него ссылались в AspNetSqlMembershipProvider и AspNetSqlProfileProvider и роли поставщика в файле machine.config. Мне пришлось найти / заменить все, ссылаясь на LocalSqlServer и заменить его именем подключения, которое я хотел использовать, DefaultConnection . Затем мне пришлось запустить aspnet_regsql.exe на моей машине разработчика из командной строки visual studio и указать ее в базу данных для создания схемы. После этого мое приложение начало работать.