自分のマシンで (ローカル) としてローカル SQL サーバー インスタンスを実行しています。私は通常のデスクトップ オフィス コンピューター (i5-2400 @ 3.1 GHz 2.85 GB RAM) を使用しています。sqlserver.exe は、タスク マネージャーで 1.5 GB のメモリを使用します。私のマシンでSQL Serverインスタンスを使用してデータセットからテーブルをアップロードし、SQL ServerでデータをクエリしてExcelにダンプするようになりました。そうすることで、SQLサーバーテーブルに8つのテーブルを構築しました。表 opcosourcingweekly には約 40 万行、26 列のようなものがあります...
私の問題は、おそらくSQLサーバーのプロセスのインデックス作成または強制終了に関する設定に関係していると思います。SQL サーバーのローカル インスタンスで単純な削除ステートメントを実行するために、自分のコードがどのようにハングアップするのかわかりません。
以下の ExecuteNonQuery を使用すると、何らかの理由でコードがハングします...コメントアウトして、プログラムを実行し、ローカル Sql Server インスタンスで更新を試みました。 削除する単純なクエリは、SQL Management Studio Express で実行するのに 2 ~ 3 分かかります...なぜ私の SQL Server インスタンスのパフォーマンスが悪いのでしょうか?
以前は、button_click 引数に何かを入れる前は、それほど時間はかかりませんでした...プログラムに datamonthlydump オプションを追加し、プライベート サブを作成する必要がありました...
ローカル マシンで実行しているときに SQL Server を高速化する方法はありますか? 私はすでにいくつかのプログラムを書いていますが、システムがハングするのはこれが初めてです。 Visual Basic でプログラミングしているときに、途中でプログラムを停止して接続を開いたまま にしておくことがある以下のコードのパフォーマンスを向上させる方法を教えてください。ありがとう!
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSQLImport.Click
If btnMthly.Checked = True Then
datadumpmthly()
ElseIf btnWkly.Checked = True Then
datadumpwkly()
End If
End Sub
Private Sub datadumpwkly()
Dim connectionstring1 As String = "Data Source=(local); Initial Catalog=master;Pooling=False;Integrated Security=True; "
Dim connection As SqlConnection = New SqlConnection(connectionstring1)
connection.Open()
Dim queryString As String = "delete from dbo.OpCoSourcingweekly"
Dim dbCommand As New SqlCommand(queryString, connection)
'dbCommand.CommandText = queryString
'dbCommand.Connection = connection
'dbCommand.CommandTimeout = 100000
'dbCommand.ExecuteNonQuery()
Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(connectionstring1)
bulkcopy.DestinationTableName = "OpCoSourcingweekly"
bulkcopy.BulkCopyTimeout = 10000000
Try
bulkcopy.WriteToServer(dataset1.Tables(0))
Catch ex As Exception
Dim error1 As String
error1 = ex.Message
MsgBox("ERROR: " & error1)
End Try
bulkcopy.Close()
End Using
'dbCommand.CommandTimeout = 100000
'queryString = "delete from dbo.OpCoSourcingweekly where [Fiscal Year Week] = '201233'"
'Dim dbCommand1 As New SqlCommand(queryString, connection)
'dbCommand1.CommandText = queryString
'dbCommand1.Connection = connection
'dbCommand.CommandTimeout = 100000
'dbCommand.ExecuteNonQuery()
'queryString = "delete from dbo.OpCoSourcingweekly where [Fiscal Year Week] = '201234'"
'Dim dbCommand2 As New SqlCommand(queryString, connection)
'dbCommand2.CommandText = queryString
'dbCommand2.Connection = connection
'dbCommand.CommandTimeout = 100000
'dbCommand.ExecuteNonQuery()
MsgBox("Done with import to SQL")
connection.Close()
End Sub
以下を行うことで修正されましたコメントありがとうございます
Private Sub datadumpwkly()
Dim connectionstring1 As String = "Data Source=(local); Initial Catalog=master; Pooling=False;Integrated Security=True; "
Using connection As SqlConnection = New SqlConnection(connectionstring1)
connection.Open()
Dim queryString As String = "truncate table dbo.OpCoSourcingweekly"
Using dbCommand As New SqlCommand(queryString, connection)
dbCommand.CommandText = queryString
dbCommand.Connection = connection
dbCommand.CommandTimeout = 100000
dbCommand.ExecuteNonQuery()
Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(connectionstring1)
bulkcopy.DestinationTableName = "OpCoSourcingweekly"
bulkcopy.BulkCopyTimeout = 10000000
Try
bulkcopy.WriteToServer(dataset1.Tables(0))
Catch ex As Exception
Dim error1 As String
error1 = ex.Message
MsgBox("ERROR: " & error1)
End Try
bulkcopy.Close()
End Using
dbCommand.CommandTimeout = 100000
End Using
queryString = "delete from dbo.OpCoSourcingweekly where [Fiscal Year Week] = '201233'"
Using dbCommand1 As New SqlCommand(queryString, connection)
dbCommand1.CommandText = queryString
dbCommand1.Connection = connection
dbCommand1.CommandTimeout = 100000
dbCommand1.ExecuteNonQuery()
End Using
queryString = "delete from dbo.OpCoSourcingweekly where [Fiscal Year Week] = '201234'"
Using dbCommand2 As New SqlCommand(queryString, connection)
dbCommand2.CommandText = queryString
dbCommand2.Connection = connection
dbCommand2.CommandTimeout = 100000
dbCommand2.ExecuteNonQuery()
End Using
MsgBox("Done with import to SQL")
connection.Close()
End Using
End Sub