Vbscript 从Win2k3迁移到Win2012 R2后,会话变量中的DB连接失败

Vbscript 从Win2k3迁移到Win2012 R2后,会话变量中的DB连接失败,vbscript,asp-classic,odbc,iis-6,iis-8.5,Vbscript,Asp Classic,Odbc,Iis 6,Iis 8.5,我目前有一个经典的ASP网站在IIS6上运行,一切正常。“包含”文件用于打开数据库连接。然后,db连接存储在会话变量中 下面是Include“dbinclude.asp”文件的一个片段: IIS 8.5中的应用程序池设置为.NET v2,允许32位应用程序、经典管道。我尝试过应用程序池的各种组合(更改为不同的.NET版本、允许/禁止32位应用程序、经典/集成管道、更改标识、尝试不同的会话状态) 在IIS 8.5中,如果我注释掉代码中的以下行: CN\u sql=Session(“连接sql”)

我目前有一个经典的ASP网站在IIS6上运行,一切正常。“包含”文件用于打开数据库连接。然后,db连接存储在会话变量中

下面是Include“dbinclude.asp”文件的一个片段:

IIS 8.5中的应用程序池设置为.NET v2,允许32位应用程序、经典管道。我尝试过应用程序池的各种组合(更改为不同的.NET版本、允许/禁止32位应用程序、经典/集成管道、更改标识、尝试不同的会话状态)

在IIS 8.5中,如果我注释掉代码中的以下行:
CN\u sql=Session(“连接sql”)

它将解决问题。
但是,由于我们有大量的页面,重写和测试目前是不可行的


Windows 2012中是否存在阻止您在会话变量中存储开放数据库连接的问题?我知道这样做效率不高,但此时重写将是一项艰巨的任务。

看起来,在新服务器上,您没有重新创建连接字符串中指定的DSN():

DSN=sqldb
如果您的应用程序在64位Windows上的32位工作进程/应用程序池中运行,请使用以下命令重新创建:

C:\Windows\SysWOW64\odbcad32.exe
否则,请使用以下命令重新创建:

C:\Windows\system32\odbcad32.exe
在64位系统上使用DSN时,这篇KB文章也很有用:


看起来,在新服务器上,您没有重新创建连接字符串中指定的DSN():

DSN=sqldb
如果您的应用程序在64位Windows上的32位工作进程/应用程序池中运行,请使用以下命令重新创建:

C:\Windows\SysWOW64\odbcad32.exe
否则,请使用以下命令重新创建:

C:\Windows\system32\odbcad32.exe
在64位系统上使用DSN时,这篇KB文章也很有用:


看起来,在新服务器上,您没有重新创建连接字符串中指定的DSN():

DSN=sqldb
如果您的应用程序在64位Windows上的32位工作进程/应用程序池中运行,请使用以下命令重新创建:

C:\Windows\SysWOW64\odbcad32.exe
否则,请使用以下命令重新创建:

C:\Windows\system32\odbcad32.exe
在64位系统上使用DSN时,这篇KB文章也很有用:


看起来,在新服务器上,您没有重新创建连接字符串中指定的DSN():

DSN=sqldb
如果您的应用程序在64位Windows上的32位工作进程/应用程序池中运行,请使用以下命令重新创建:

C:\Windows\SysWOW64\odbcad32.exe
否则,请使用以下命令重新创建:

C:\Windows\system32\odbcad32.exe
在64位系统上使用DSN时,这篇KB文章也很有用:



不是正数,但在为对象分配变量时,是否应该使用
set
?正如在
set CN\u sql=Session(“Connection\u sql”)
中一样,您可能还需要在其他一些赋值中设置
set
。为什么不将其存储在global.asa中的应用程序变量中呢。然后,您应该能够运行全局替换,用
应用程序(“连接sql”)
替换
会话(“连接sql”)
,即使在大型站点上,这也只需要几秒钟。会话变量似乎是存储conn的奇怪地方string@John当前位置我仍然需要打开连接,我想这就是导致它崩溃的原因,但我会尝试一下@基思:
set
不需要。我确实尝试过,但它产生了另一个错误。我不明白为什么这会是一个问题。也可能值得尝试不同的conn字符串-看看这里的OLEDB提供程序-不是积极的,但在为对象分配变量时,您不应该使用
set
?正如在
set CN\u sql=Session(“Connection\u sql”)
中一样,您可能还需要在其他一些赋值中设置
set
。为什么不将其存储在global.asa中的应用程序变量中呢。然后,您应该能够运行全局替换,用
应用程序(“连接sql”)
替换
会话(“连接sql”)
,即使在大型站点上,这也只需要几秒钟。会话变量似乎是存储conn的奇怪地方string@John当前位置我仍然需要打开连接,我想这就是导致它崩溃的原因,但我会尝试一下@基思:
set
不需要。我确实尝试过,但它产生了另一个错误。我不明白为什么这会是一个问题。也可能值得尝试不同的conn字符串-看看这里的OLEDB提供程序-不是积极的,但在为对象分配变量时,您不应该使用
set
?正如在
set CN\u sql=Session(“Connection\u sql”)
中一样,您可能还需要在其他一些赋值中设置
set
。为什么不将其存储在global.asa中的应用程序变量中呢。然后,您应该能够运行全局替换,用
应用程序(“连接sql”)
替换
会话(“连接sql”)
,即使在大型站点上,这也只需要几秒钟。会话变量似乎是存储conn的奇怪地方string@John当前位置我仍然需要打开连接,我想这就是导致它崩溃的原因,但我会尝试一下@基思:
set
不需要。我确实尝试过,但它产生了另一个错误。我不明白为什么这会是一个问题。也可能值得尝试不同的conn字符串-看看这里的OLEDB提供程序-不是积极的,但在为对象分配变量时,您不应该使用
set
?正如在
set CN\u sql=Session(“Connection\u sql”)
中一样,您可能还需要在其他一些赋值中设置
set
。为什么不将其存储在global.asa中的应用程序变量中呢。然后,您应该能够运行全局替换,用
应用程序(“连接sql”)
替换
会话(“连接sql”)
,即使在大型站点上,这也只需要几秒钟。会话变量似乎是存储conn的奇怪地方string@John当前位置我仍然需要打开连接,我想这就是导致它崩溃的原因,但我会尝试一下@基思:
set
不需要。我确实试过了,但它产生了另一个错误。我不明白为什么会这样