Проблема изоляции сеанса с локальной базой данных SQL Anywhere - PullRequest
3 голосов
/ 05 августа 2010

Я перенесу существующий набор приложений с Win XP на Win 7. У нас есть стороннее приложение, которое запускается и запускается в сеансе пользователя, который обращается к локальной базе данных SQL Anywhere 9 через ODBC (запускается по требованию с помощью dbeng9).На той же машине у нас есть веб-сайт ASP.NET, который также обращается к локальной базе данных SQL Anywhere через ODBC.Эти два приложения прекрасно работают вместе в Win XP, поскольку оба процесса выполняются в сеансе 0.

В Win 7 на сайте ASP.NET обнаружена ошибка ODBC о том, что указанный файл базы данных уже используется.Это связано с тем, что стороннее приложение запускается первым и запускает экземпляр dbeng9 (через ODBC) в сеансе пользователя (обычно это сеанс 1).Затем ASP.NET раскручивается и пытается подключиться к той же базе данных.Драйвер ODBC видит, что экземпляр dbeng9 не запущен в текущем сеансе (сеанс 0), и пытается развернуть экземпляр, когда он не может получить доступ к файлу базы данных, поскольку он уже используется зарегистрированным пользователем вСессия 1.

У кого-нибудь есть предложения по решению проблем изоляции сеансов с локальными базами данных SQL Anywhere?

Я думал о запуске dbeng9 в качестве службы, а не о том, чтобы ODBC запускал экземпляр по требованию.,Однако, поскольку SQL Anywhere поставляется вместе со сторонним продуктом, на ПК нет dbsrv, и я не уверен, как это повлияет на лицензирование.

Сайт ASP.NET доступен только с локального ПК.Будет ли запуск сайта ASP.NET на стороннем веб-сервере причиной его запуска в сеансе пользователя?(Примечание: поскольку он работает на 1000 машин, необходим бесплатный или очень дешевый вариант.)

  • Является ли сервер разработки ASP.NET, поставляемый в комплекте с Visual Studio, распространяемым таким образом?
  • Можно ли настроить IIS 7 или IIS 7 Express для работы в режиме «только локальный», в котором он выполняется в сеансе пользователя?

1 Ответ

2 голосов
/ 06 августа 2010

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

Если вы можете создать службу с помощью утилиты dbsvc или Sybase Central, это будет вашим лучшим выбором. Вам нужно поговорить со сторонним поставщиком, чтобы узнать, разрешено ли это по вашей лицензии.

...