I am migrating an existing set of applications from Win XP to Win 7. We have a third-party application that launches and runs in a user session that accesses the local SQL Anywhere 9 database through ODBC (runs on demand using dbeng9). On the same machine, we have an ASP.NET site that also accesses the local SQL Anywhere database through ODBC. These two applications blend well in Win XP because both processes run in session 0.
In Win 7, an ASP.NET site detects an ODBC error, which indicates that the specified database file is already in use. This is because the third-party application starts first and starts the dbeng9 instance (via ODBC) in the user session (usually session 1). Then ASP.NET starts up and tries to connect to the same database. The ODBC driver sees that the dbeng9 instance is not running in the current session (session 0) and tries to deploy the instance when it cannot access the database file because it is already in use by the registered user in Session 1.
Does anyone have any suggestions for resolving session isolation problems with local SQL Anywhere databases?
I thought about starting dbeng9 as a service, rather than letting ODBC deploy the instance on demand. However, since SQL Anywhere ships with a third-party product, the PC does not have dbsrv, and I'm not sure how this will affect licensing.
ASP.NET is available only from the local PC. Will running an ASP.NET site on a third-party web server force it to run in a user session? (Note: since it runs on 1000 machines, this is an optional option with free or very low cost.)
- Is the ASP.NET Development Server that ships with Visual Studio distributed this way?
- Is it possible to configure IIS 7 or IIS 7 Express to work only in the "local" mode in which it runs in a user session?