真的很快,我需要關閉一個ADO命令嗎?我已經在幾個地方看過,只是簡單地把它設置爲沒有做關閉它的同樣的事情,但我還沒有找到明確的答案。VB6,ADO,異步命令並關閉連接
我有一個VB6例程,它在運行時創建一個連接和命令對象,它們異步執行一個不返回任何結果的存儲過程。
在這個例程結束時,兩個對象都被設置爲空。下面的代碼完全顯示了執行的操作
' Open connection
con.Open
'
' Create command to execute stored proc
Set cmd = New ADODB.Command
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = cSQLDelete
cmd.Parameters.Append cmd.CreateParameter _
("@ExpiryDate=", adDate, adParamInput, 20, ExpiryDate)
'
' Run procedure, no results
cmd.Execute , , adExecuteNoRecords + adAsyncExecute
'
' Tidy up
Set cmd = Nothing
Set con = Nothing
注意不存在con.Close。如果在con = nothing之前插入它,則存儲過程不會運行 - 我假設由於它是異步的,它在連接關閉之前沒有時間執行。
沒有con.Close,這工作正常。
所以,我的問題是什麼暗示有沒有關閉連接。連接是否會在後臺簡單超時?請記住,這個功能被稱爲一個LOT,到目前爲止測試沒有顯示任何問題。
如果我需要在存儲過程完成時關閉連接,我該怎麼做?擁有C#背景,我不熟悉VB6,並發現在運行時使用事件創建對象是一個尷尬的過程。
p.s. SQL Server 2008中
感謝
我鼓勵你檢查SQL Server框上的資源。具體來說,使用SQL Server Management Studio連接到它,打開查詢窗口並執行「sp_who」。我認爲你會發現很多徘徊的連接,最終可能會讓你的SQL Server變慢。這只是一個猜測(這就是爲什麼我沒有把它作爲答案)。由於它非常容易檢查,所以我鼓勵你嘗試一下。 –