我有一个使用经典ASP和SQL Server 2008数据库的程序。
我有许多函数通过特定函数向数据库插入不同的值。这是我的代码
的一个例子Dim Global_connection, global_group
global_group=-1
function connect2server()
set Global_connection=Server.CreateObject("ADODB.Connection")
Global_connection.open Connection_string
end function
function data2log(data)
dim sql
sql = "insert into log(user, module, data, group) values (" & _
request.form("user")
& ", " & constant_module
& ", 'SPID:' + cast(@@SPID as varchar) + ' -- " & data & "'"
& ", " & global_group & ")"
Global_connection.execute(sql)
if global_group= -1 then
dim rs
set rs = Global_connection.execute("select scope_identity() as x")
global_group = rs.fields("x").value
rs.close
end if
end function
function AA()
dim rs, sql
''.... blabla code
data2log("step 1, fine")
sql = "select...."
set rs = Global_connection.execute(sql)
data2log("setp 2, fine")
rs.close
''.... blabla code
end function
function BB()
dim rs, sql
''.... blabla code
data2log("step 3, fine")
set rs = Server.CreateObject("ADODB.recordset")
sql = "select...."
rs.open sql, Global_connection, adOpenStatic, adLockReadOnly
data2log("step 4, bad")
rs.close
set rs = nothing
''.... blabla code
data2log("step 5, fine")
end function
call AA
call BB
插入的值类似于此(选择组,来自日志的数据):
group data
-1 SPID: 202 -- step 1, fine
1001 SPID: 202 -- step 2, fine
1001 SPID: 202 -- step 3, fine
1001 SPID: 333 -- step 4, bad
1001 SPID: 202 -- step 5, fine
查看步骤4,它具有不同的连接ID。
假设 rs.open sql,global_connection 使用相同的连接,但看起来像是打开一个新连接,因为在 rs.close 之后它会显示原始连接SPID。
我错了吗?在rs.open命令中需要一个选项吗? 如果我错了,可以说出它为什么会发生。
编辑: 我试过换到
set rs.activeConnection = global_connection
rs.open sql, , adOpenStatic, adLockReadOnly
但它仍然失败:(