Мы используем ASP.NET MVC с LINQ to SQL. Мы добавили некоторые функции и протестировали их все до совершенства на нашей QA Box. Мы используем Windows Server 2003 и SQL Server 2005. Поэтому, когда мы выдвигали изменения на веб-сервере Live, мы также использовали Red Gate SQL Compare для внесения новых изменений в базу данных LIVE. Мы снова проверили между несколькими из нас, никаких проблем. Время ложиться спать.
Наступает утро, и пользователи начинают бить по приложению и BOOM. Мы понятия не имеем, почему это произошло, потому что мы не делали никаких новых типов кода, чего не делали раньше. Однако мы заметили, что во время синхронизации SQL Compare имена всех внешних ключей различались между двумя базами данных, а не идентификаторами в таблицах, от FK_AssetAsset_A0EB67 до FK_AssetAsset_B67EF8 (например, не помню точное число конечных смешанных символов во время SQL Compare), мы не уверены, почему, но это еще одна переменная в этой проблеме.
Как ни странно, когда все это было вытолкнуто, мы могли затем воспроизвести ошибки в QA, но не раньше, чем все было переведено в LIVE.
Базы данных QA и LIVE находятся на одном и том же SQL Server, но приложения находятся в разных экземплярах Windows Server 2003.
Сгенерировано ошибок:
Индекс находился за пределами массива.
Недопустимая попытка вызвать FieldCount при закрытом считывателе.
Серверу не удалось возобновить транзакцию.
Уже существует открытый DataReader, связанный с этой командой, который должен быть закрыт первым.
Произошла ошибка транспортного уровня при отправке запроса на сервер.
При получении результатов с сервера произошла ошибка транспортного уровня.
Неправильная попытка вызова Read, когда читатель закрыт.
Недопустимая попытка вызова метаданных, когда читатель закрыт.
Счетчик должен быть положительным, а счетчик должен указывать на местоположение в строке / массиве / коллекции. Название параметра: count
ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения - соединение.
Кто-нибудь знает, что, черт возьми, могло произойти?
РЕДАКТИРОВАТЬ: Так как мы смогли внезапно повторить ошибки в QA, это не могло быть проблемой загрузки пользователя ... Само собой разумеется, что мы все чувствуем себя действительно испорченными.