3

我正在将现有的一组应用程序从 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 配置为在用户会话中执行的“仅本地”模式下运行?
4

1 回答 1

2

只要您运行的是 SQL Anywhere 版本 9.0.2.3420 或更高版本,作为服务运行的数据库服务器就应该通过共享内存从在该计算机上的任何会话中运行的客户端可见。

如果您能够使用 dbsvc 实用程序或 Sybase Central 创建服务,那将是您的最佳选择。您必须与第三方供应商交谈,以查看您的许可证是否允许这样做。

于 2010-08-05T20:41:01.690 回答