Назад | Перейти на главную страницу

Приложение IIS7 использует неправильную базу данных SQL Server 2008 Express

Я в тупике. У меня есть клиентский сайт на виртуальном частном сервере - 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. Я также установил базу данных разработчика как базу данных по умолчанию для учетной записи. Я удалил доступ к базе данных разработчиков из рабочего входа. Когда я пытаюсь войти на сайт, я получаю следующую ошибку:

В результате я знаю две вещи наверняка:

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

Все еще в тупике.

После еще более глубоких поисков я нашел виновника - это проблема приложения, связанная с конфигурацией NHibernate. Одна из установленных опций конфигурации NHibernate была «default_schema» - когда я ее удалил, приложение начало подключаться к правильной базе данных.

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

Похоже, у вас более одной строки подключения; Возможно ли, что он где-то хранится в приложении?

Создайте новый идентификатор пользователя / пароль только в системе разработчика, измените строку подключения разработчика, чтобы использовать его, если он подключается, проблема в другом месте.

Если у вас есть доступ к полной версии SQL, вы можете запустить Profiler для экземпляра SQLExpress и отслеживать активность.