我正在使用 sp_oacreate 调用 web 服务。Web 服务只输出从数据库查询的字符串。这是顺序:
- sp_oacreate -> 创建 MSXML2.XMLHTTP 的实例
- sp_oamethod -> 打开连接
- sp_oamethid -> 发送
- sp_oamethod -> 获取响应文本
- sp_oadestory -> 释放创建对象的内存
我尝试更改数据库中的数据以检查更改是否反映在 web 服务调用期间,但输出始终与第一次运行相同。似乎 sp_oadestroy 并不能真正释放内存,或者似乎它正在使用缓存。内存问题?
为了详细说明,这是一个示例运行和/我们的输出:
- 更新数据库:1,2,3,4
- 首次运行输出:1,2,3,4
- 更新的数据库:1,2,3,4,5
- 第二次运行输出:1,2,3,4
- .... 以此类推,输出相同
我知道 CLR 最适合这个,但 CLR 在 SQL2000 中不可用,所以它不是替代方案。假设我真的必须在 SQL2000 中执行此操作。修补程序或补丁?假设管理员不允许或冒险(对此没有进一步的问题:D)
请对这个问题有所了解。非常感谢!
以下是部分代码:
SET @url = 'http://url_showtext.php?val1=1&val2=2'
EXEC sp_OACreate 'MSXML2.XMLHTTP', @object OUT
EXEC sp_OAMethod @object, 'open', NULL,'get', @url, 'false'
EXEC sp_OAMethod @object, 'send'
EXEC sp_OAMethod @object, 'responseText', @ResponseText OUTPUT
EXEC sp_OADestroy @object
select @ResponseText
顺便说一句,请不要过多地询问或嘲笑我为什么使用 sp_oacreate 并通过 sql 调用这个 web 服务。我已经看到了很多这样的事情,他们并没有帮助达到这一点,真的。谢谢!