【问题标题】:SQL Sever(2005) Agent not completing VBS scriptSQL Server(2005) 代理未完成 VBScript
【发布时间】:2013-07-05 04:57:45
【问题描述】:

当 SQL 代理在 SQL Server 2005 中运行以下日常脚本作为作业的一部分时,它似乎不会执行最后一行 set fso = nothing 并且对象永远不会从内存中删除,从而导致作业在一个月左右后失败。

SQL 代理似乎没有执行最后一行代码有什么原因吗?

dim fso

set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists("E:\Foo.mdb") Then
    fso.DeleteFile "E:\Foo.mdb", True
End If

fso.CopyFile "E:\Foo.temp.mdb", "E:\Foo.mdb", True 

set fso = nothing

【问题讨论】:

    标签: sql sql-server vbscript sql-agent-job


    【解决方案1】:

    首先,当补丁发布时,您应该每月应用补丁,因此每月重新启动。

    不幸的是,由于过于必要的补丁周期,人们自豪地以几年来衡量正常运行时间的日子已经一去不复返了。如果您真的需要 24/7/365 全天候访问(提示:不太可能),您需要具有集群或复制的高可用性设置。

    其次,我认为您的诊断不正确。当 VBScript 引擎对象被销毁时,所有对象应该被释放,无论您是否显式释放它们。那么你认为 FSO 被保存在内存中了吗?您如何确认这一点?

    原则上,您可以使用 sysinternals Process Explorer 检查关联的 DLL 是否由 SQL Server 代理进程卸载,这通常会在最后一个对象被销毁后的几分钟内发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多