从经典 ASP 调用 SQL 服务器,ADO 将不会保持断开连接的记录集打开
Call to SQL Server from classic ASP and ADO will not keep disconnected recordset open
我正忙于移植经典 ASP 站点。对于通过 ODBC 对 SQL Server 2012 的特定调用,我使用以下代码:
objRS.CursorLocation = adUseClient
objRS.Open strSQL, objConn, adOpenStatic, adLockBatchOptimistic
使用 SQL Server Profiler,我可以直接在 SQL Server Management Studio returns 我的记录中看到正在调用和 运行 相同的查询。
然后我继续下面的代码:
Set objRS.ActiveConnection = Nothing
objConn.Close
set objConn = Nothing
Set GetRecordSet = objRS
set objRS = Nothing
其中 GetRecordSet
是函数的名称。
在调用页面中,我将我的记录集设置为 GetRecordSet
,我执行检查 if not RS.EOF then
崩溃,无法在已关闭的记录集上执行查询。它应该断开连接,但由于某种原因它失败了。
更新:有趣的是,传递失败的 SQL 是一个存储过程。如果我将传入的值更改为 select * from mytable
它会起作用。在数据库端,我用来通过 ODBC 连接的用户具有 read/write 和对存储过程的执行权限。
错误以日期为中心。在 SP 中,我将日期格式设置为 DMY。数据库语言设置为英式英语。在 ODBC 连接中,SQLSErver 消息的语言也设置为英式英语。我没有设置的是 ODBC 驱动程序中的 Use regional settings when outputting currency,numbers, dates and times
,因此当返回结果集时,它恢复为默认设置,因此无法正确映射日期时间并终止结果集。
我正忙于移植经典 ASP 站点。对于通过 ODBC 对 SQL Server 2012 的特定调用,我使用以下代码:
objRS.CursorLocation = adUseClient
objRS.Open strSQL, objConn, adOpenStatic, adLockBatchOptimistic
使用 SQL Server Profiler,我可以直接在 SQL Server Management Studio returns 我的记录中看到正在调用和 运行 相同的查询。
然后我继续下面的代码:
Set objRS.ActiveConnection = Nothing
objConn.Close
set objConn = Nothing
Set GetRecordSet = objRS
set objRS = Nothing
其中 GetRecordSet
是函数的名称。
在调用页面中,我将我的记录集设置为 GetRecordSet
,我执行检查 if not RS.EOF then
崩溃,无法在已关闭的记录集上执行查询。它应该断开连接,但由于某种原因它失败了。
更新:有趣的是,传递失败的 SQL 是一个存储过程。如果我将传入的值更改为 select * from mytable
它会起作用。在数据库端,我用来通过 ODBC 连接的用户具有 read/write 和对存储过程的执行权限。
错误以日期为中心。在 SP 中,我将日期格式设置为 DMY。数据库语言设置为英式英语。在 ODBC 连接中,SQLSErver 消息的语言也设置为英式英语。我没有设置的是 ODBC 驱动程序中的 Use regional settings when outputting currency,numbers, dates and times
,因此当返回结果集时,它恢复为默认设置,因此无法正确映射日期时间并终止结果集。