我正在使用sp_oacreate来调用webservice。 webservice只输出从数据库查询的字符串。 这是序列:
我尝试更改数据库中的数据以检查在Webservice调用期间是否反映了更改,但是输出在第一次运行时始终是相同的。似乎sp_oadestroy实际上无法释放内存或似乎正在使用缓存。记忆问题?
详细说明,这是一个示例运行和/我们的输出:
我知道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服务的事情。我见过很多这样的事情,他们并没有帮助达到目的,真的。谢谢!
答案 0 :(得分:2)
如果其他人偶然发现这个问题,我将不得不回答我自己的问题:
只需在网页的上半部分添加“no-cache”语句即可。 在我的例子中,sp_oamethod只是称为一个简单的asp经典页面。
所以,只需添加asp页面:
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
答案 1 :(得分:1)
您无需对任何内容进行任何更改。检索到的页面实际上是由Internet Explorer缓存的
所以你只需要在Internet Explorer / Internet选项/临时Internet文件和历史记录设置/检查存储页面的更新版本中设置“我每次访问网页”选项