Приложение IIS7, использующее неправильную базу данных SQL Server 2008 Express - PullRequest
1 голос
/ 08 сентября 2010

Я в тупике. У меня есть клиентский сайт на виртуальном частном сервере - Windows Web Server 2008 SP2, IIS7, SQL Server 2008 Express.

Я пытаюсь настроить второе веб-приложение, чтобы позволить ему просматривать обновления до их выхода в эфир. Я создал веб-приложение в IIS7 и добавил вторую базу данных для SQL Server. Второй БД, по сути, является копией производственного БД, с префиксом «DEV» перед именем базы данных и несколькими новыми полями в нескольких таблицах.

Моя производственная площадка работает нормально. Тем не менее, тестовый сайт возвращается с SqlException: «Недопустимое имя столбца« версия ».» Это одно из новых полей, которое заставляет меня поверить, что мой сайт разработчиков ссылается на производственную базу данных, а не на базу данных разработчиков. Однако строки подключения указывают на разные базы данных (хотя логин для них одинаков):

  • Рабочий сайт: "Сервер =. \ SQLExpress; База данных = myDbName; Идентификатор пользователя = myUserName; Пароль = myUserPassword;"
  • Сайт разработчика: "Сервер =. \ SQLExpress; База данных = DEVmyDbName; Идентификатор пользователя = myUserName; Пароль = myUserPassword;"

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

ОБНОВЛЕНИЕ, после дальнейшего тестирования:

Я изменил строку подключения сайта разработчика на

"Server=.\SQLExpress;Database=DEVmyDbName;User ID=devuser;Password=myNewDifferentPassword;"

и создал новый логин SQL-сервера в базе данных и предоставил ему доступ только к базе данных dev. Я также установил базу данных dev как базу данных по умолчанию для учетной записи. Я удалил доступ к базе данных dev из рабочего логина. Когда я пытаюсь войти на сайт, я получаю следующую ошибку:

  • Основной сервер "devuser" не может получить доступ к базе данных "myDbName" в текущем контексте безопасности.

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

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

Не думаю, что это должно иметь значение, но я упомяну, что я использую NHibernate для доступа к базе данных.

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

1 Ответ

1 голос
/ 09 сентября 2010

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

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

...