插入@@ SPID的值不同,但连接相同

时间:2017-06-20 16:43:34

标签: sql-server vbscript ado

我有一个使用经典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

但它仍然失败:(

0 个答案:

没有答案