Classic ASP + ADODB -- 如何查看实际查询 运行(用于测试)

Classic ASP + ADODB -- how to see actual query being run (for testing)

我正在使用经典 ASP。我有一个用于数据库查询的包装函数,它接受一个查询字符串和一个参数数组,并自动创建适当的查询对象并运行查询。非常好用,一直很好用。

这是我的问题:测试时,我经常想查看传递给 SQL 的查询的确切文本。回到通过串联组装查询的 "bad old days" 中,我可以只写出字符串。现在我正在使用参数化,它有点棘手。

如何在完全组装的查询字符串传递到数据库连接之前查看它?

这是我正在使用的功能,经过简化。 (例如,实际函数不假定字符串。)

Public Function pquery( strQuery, params )
    Dim cmd, param, thisParam, rs
    Set cmd = Server.CreateObject( "ADODB.Command" )
    cmd.ActiveConnection = MyConn
    cmd.CommandText = strQuery
    If IsArray( params ) then
        Dim adVarChar : adVarChar = 200
        For Each param In params
            Set thisParam = cmd.CreateParameter( "@p", adVarChar, , len( param ), param )
            cmd.Parameters.Append thisParam
        Next
    End If
    Set rs = cmd.Execute
    Set pquery = rs
End Function

我会考虑使用 Sql Query Profiler,因为它可以让您查看 sql 文本以及传入的值。它还可以让您设置断点查看 运行 查询需要多长时间。但是,这需要将查询发送到实际数据库(您之前已经请求过)。

要预先执行此操作,您需要遍历命令对象中的参数集合,然后使用命令文本 属性 中的 key/value 对执行 find/replace。如果您可以使用 Profiler,那充其量只是骇人听闻。