私はデータベースに接続するマルチスレッドアプリケーションを実行しています。接続が完了すると接続は閉じられます(すべてのスレッドを破棄します)。私はpooling = falseを設定して接続プールをクリアしようとしました。私は.disposeと.closeの両方を使用しました。vb.netでSQLConnection文字列を完全に閉じますか?
接続がすべて閉じられた後に接続先のデータベースを削除しようとすると、「現在データベースが使用中なのでデータベースを削除できません」というエラーが表示されます。以下は私のコードです
Dim comExecuteInsert As New SqlCommand
Dim comm As New SqlConnection
If (Not comm Is Nothing) Then
comm = Nothing
End If
comExecuteInsert.Connection = comm
comExecuteInsert.CommandType = CommandType.StoredProcedure
comExecuteInsert.CommandText = strProcedureName
comExecuteInsert.CommandTimeout = 26000
comExecuteInsert.Parameters.Add("@tableName", SqlDbType.VarChar, 100).Value = strTableName
comExecuteInsert.Parameters.Add("@filename", SqlDbType.VarChar, 500).Value = strFileName
comExecuteInsert.ExecuteScalar()
comExecuteInsert.Parameters.Clear()
comExecuteInsert = Nothing
comm.Close()
SqlConnection.ClearPool(comm)
ストアドプロシージャは、後でデータベースに存在するテーブルにデータをドロップして挿入する一時テーブルを作成します。
は、それはあなたがデータベースをドロップするか、ちょうどあなたが(実際には、接続プールに接続を返し、それ以降でのみ、実際にそれを閉じて)接続を閉じることを確認しようとしているということですか? – Thomas
@mellamokb私は、コードの2行目から最後の行まで、comm.Close()との接続を閉じます。 – RobinReborn
@Thomas接続を終了したいのでデータベースを削除します。 – RobinReborn