我正在将现有的一组应用程序从 Win XP 迁移到 Win 7。我们有一个第 3 方应用程序,它由用户会话启动并运行,它通过 ODBC 访问本地 SQL Anywhere 9 数据库(使用 dbeng9 按需启动)。在同一台机器上,我们有一个 ASP.NET 网站,它还通过 ODBC 访问本地 SQL Anywhere 数据库。这两个应用程序在 Win XP 中可以很好地配合使用,因为这两个进程都在会话 0 中运行。
在 Win 7 中,ASP.NET 站点遇到一个 ODBC 错误,指出指定的数据库文件已在使用中。这是因为第 3 方应用程序首先启动并在用户会话(通常是会话 1)中启动 dbeng9 实例(通过 ODBC)。然后,ASP.NET 启动并尝试连接到同一个数据库。ODBC 驱动程序发现 dbeng9 的实例未在当前会话(会话 0)中运行,并尝试启动一个实例,此时它无法访问数据库文件,因为它已被登录用户使用会话 1。
是否有人对解决本地 SQL Anywhere 数据库的会话隔离问题有任何建议?
我考虑将 dbeng9 作为服务运行,而不是允许 ODBC 按需启动实例。但是,由于 SQL Anywhere 与第 3 方产品捆绑在一起,因此 PC 没有 dbsrv,我不确定这会如何影响许可。
ASP.NET 站点只能从本地 PC 访问。在第 3 方 Web 服务器中运行 ASP.NET 站点会导致它在用户会话中执行吗?(注意:因为它在 1,000 台机器上运行,所以必须选择免费或成本极低的选项。)
- 与 Visual Studio 捆绑在一起的 ASP.NET 开发服务器是否可以以这种方式再分发?
- 是否可以将 IIS 7 或 IIS 7 Express 配置为在用户会话中执行的“仅本地”模式下运行?