0

我正在尝试从 SQL Server 2005 上运行的查询中将 varbinary 输出值检索到 Classic ASP 中。当涉及到将 varbinary 输出转换为字符串的部分代码时,ASP 执行就会失败。所以我想我们必须以其他方式处理它。

实际上,我正在尝试为数据库连接设置 (sp_setapprole) 和取消设置 (sp_unsetapprole) 应用程序角色。首先我设置了approle,然后我运行了我需要的查询,最后取消了approle。在取消设置期间,当我需要 ASP 代码中的 cookie (varbinary) 值时,我可以创建像“exec sp_unsetapprole @cookie”这样的查询。那么在这个阶段,我没有 cookie (varbinary) 值。

我这样做的原因是我在尝试设置应用程序角色时曾经收到“sp_setapprole 未正确调用”错误。我通过将“OLE DB Services = -2;Pooling=False”附加到我的连接字符串中来禁用池。

我知道池有助于提高性能,但在这里我面临着大问题。

请帮助我将 varbinary 值检索到经典 ASP 文件中,或建议一种设置和取消设置应用程序角色的方法。无论哪种方式的解决方案都值得赞赏。

谢谢,南达戈帕尔

4

2 回答 2

0

最简单的方法是将来自 sp_setapprole 的 varbinary 值存储在 ADO 记录集中并保留该值,而不用担心实际类型(不过,您应该能够将值存储在字节数组中)。

然后,当您需要将该 varbinary 值放在最终的 sp_setapprole 中时,您可以简单地使用记录集值。通过使用 ADODB.Command 对象调用 sp_setapprole 来执行此操作:

'--untested, syntax could be slightly off'
Set myCommand = Server.CreateObject("ADODB.Command")
With myCommand
    .ActiveConnection = myConnection
    .CommandType = adCmdStoredProc
    .CommandText = "sp_unsetapprole"
    .Parameters.Append _
        .CreateParameter("@Cookie", adLongVarBinary, adParamInput, fileSize)
    .Parameters(str_ParamName).Attributes = adFldLong
    .Parameters(str_ParamName).AppendChunk myRecordset.Fields("Cookie").Value
    .Execute
End With

也许您还可以从这个 Stackoverflow 问题中获得一些见解。

于 2010-03-28T12:00:09.733 回答
0

也许您可以尝试将您的 VARBINARY 数据类型转换为 IMAGE,它已经足够老,可以被“经典”ASP 使用。只是一个想法。可能是错的。

于 2010-03-28T11:28:11.827 回答