Я в тупике. У меня есть клиентский сайт на виртуальном частном сервере - Windows Web Server 2008 SP2, IIS7, SQL Server 2008 Express.
Я пытаюсь настроить второе веб-приложение, чтобы он мог просматривать обновления до их публикации. Я создал веб-приложение в IIS7 и добавил вторую базу данных в SQL Server. Вторая база данных по сути является копией производственной базы данных с префиксом «DEV» перед именем базы данных и несколькими новыми полями в нескольких таблицах.
Мой производственный сайт работает нормально. Однако тестовый сайт возвращается с SqlException: «Недопустимое имя столбца 'версия'». Это одно из новых полей, которое наводит меня на мысль, что мой сайт разработчиков относится к производственной базе данных, а не к базе данных разработчиков. Однако строки подключения указывают на разные базы данных (хотя логин для них одинаков):
Похоже, это должно быть что-то очевидное, чего мне не хватает. Коллега предложил мне создать еще один пул приложений для второго приложения IIS, но это, похоже, не помогло.
ОБНОВЛЕНИЕ после дальнейшего тестирования:
Я изменил строку подключения к сайту разработчиков на
"Server=.\SQLExpress;Database=DEVmyDbName;User ID=devuser;Password=myNewDifferentPassword;"
и создал новую учетную запись SQL-сервера в базе данных и предоставил ему доступ только к базе данных dev. Я также установил базу данных разработчика как базу данных по умолчанию для учетной записи. Я удалил доступ к базе данных разработчиков из рабочего входа. Когда я пытаюсь войти на сайт, я получаю следующую ошибку:
В результате я знаю две вещи наверняка:
Все еще в тупике.
После еще более глубоких поисков я нашел виновника - это проблема приложения, связанная с конфигурацией NHibernate. Одна из установленных опций конфигурации NHibernate была «default_schema» - когда я ее удалил, приложение начало подключаться к правильной базе данных.
Похоже, что свойство default_schema переопределяло любую базу данных, указанную в строке подключения.
Похоже, у вас более одной строки подключения; Возможно ли, что он где-то хранится в приложении?
Создайте новый идентификатор пользователя / пароль только в системе разработчика, измените строку подключения разработчика, чтобы использовать его, если он подключается, проблема в другом месте.
Если у вас есть доступ к полной версии SQL, вы можете запустить Profiler для экземпляра SQLExpress и отслеживать активность.