似乎我们的一个VBS程序导致内存泄漏。有人可以给我任何建议以避免它吗?
我在Server-A中有一个VBS程序。 VBS程序的第一部分只从Server-B(SQL Server)中选择一条记录,并决定它是执行以下代码还是按记录的一列值退出。它由Server-A的计划任务执行,每隔一分钟运行一次。
虽然程序每隔一分钟监视一次表,但它在大多数时间检查表值后立即退出,并且每月只进行一次或两次以下过程。但是,如附图所示,Server-A的可用内存量急剧减少。
以下功能是在VBS程序的第一部分调用的功能。如果返回码为0,则退出。
如果有人给我们任何建议,我将不胜感激。
图片:免费内存使用(绿色=免费内存)(8月12日 - 8月27日)
Dim DestDWHServer
(*snip*)
Call Main
'**************************************
Main
'**************************************
Sub Main
'Get the name of the DBserver (DEV/QA/PROD)
Call subSetDestDWHServer
'Check the order from the user
if fncCTLCheck_Update() = 0 then Exit Sub
(*snip*)
End Sub
'**************************************
Check the Order from Users
'**************************************
Function fncCTLCheck_Update()
dim ret,flgOrder,cn,sSQLSelect,sSQLUpdate,sSvr,sDB,sCn,cmd,rs
'
ret = 0
'
Set cn = CreateObject("ADODB.Connection")
sSvr = DestDWHServer
sDB = "DB_A"
'
sCn = "XXXXXXXXXXX" 'ConnectionString
cn.ConnectionString = sCn
cn.Open
'
sSQLSelect= "SELECT [FLG_ORDER], [STATUS_T] FROM [DB_A].[dbo].
[T_CTL_TASK] WHERE [TASK_ID] = 1"
'
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = cn
cmd.CommandText = sSQLSelect
'
Set rs = CreateObject("ADODB.Recordset")
rs.Open cmd
flgOrder = rs.Fields("FLG_ORDER").Value
'
rs.Close
'
If flgOrder = 0 then
ret = 0
Else
ret = 1
sSQLUpdate = "UPDATE [DB_A].[dbo].[T_CTL_TASK] set [FLG_ORDER]=0,
[STATUS_T]=1, [LAST_START_DTM] = getdate() WHERE [TASK_ID] = 1"
cmd.CommandText = sSQLUpdate
cmd.Execute
End If
cn.Close
set cmd = nothing
set cn = nothing
'
fncCTLCheck_Update = ret
'
End Function
'**************************************
Get the server name
'**************************************
Sub subSetDestDWHServer
Dim obj
Dim HostName
Set obj = CreateObject("WScript.Network")
HostName=obj.ComputerName
Set obj = Nothing
select case HostName
case "ServerA_DEV"
DestDWHServer = "ServerB_DEV"
case "ServerA_QA"
DestDWHServer = "ServerB_QA"
case "ServerA_PROD"
DestDWHServer = "ServerB_PROD"
End Select
End Sub