SQL Server(2005)代理未完成VBScript

时间:2013-07-05 04:57:46

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

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

SQL Agent是否有理由不执行最后一行代码?

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

1 个答案:

答案 0 :(得分:1)

首先,您应该每月应用补丁,因此每月重启一次。

人们自豪地测量多年的正常运行时间的日子已经消失,因为不幸的是非常必要的补丁周期。如果您真的需要24/7/365访问(提示:不太可能),您需要具有群集或复制的高可用性设置。

其次,我不认为您的诊断是正确的。无论您是否明确释放VBScript引擎对象,都会释放所有 对象。所以你认为FSO是在记忆中吗?你是怎么证实的?

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