SqlDataReader
を使用してC#でクエリを実行しようとしていますが、データベースからエラーメッセージ "" "となります。SQLDataReaderを使用してC#でSQL Serverのクエリを実行する際に問題が発生する
私のSQLクエリで何が問題なのかよくわかりません。私はそれをSQL Server Management Studioで完璧に実行できます。
try
{
SqlConnection thisConnection = new SqlConnection();
thisConnection.Open();
SqlCommand thisCommand = thisConnection.CreateCommand();
thisCommand.CommandText = "SELECT"
+"db.name DBName,"
+"tl.request_session_id,"
+"wt.blocking_session_id,"
+"OBJECT_NAME(p.OBJECT_ID) BlockedObjectName,"
+"tl.resource_type,"
+"h1.TEXT AS RequestingText,"
+"h2.TEXT AS BlockingText,"
+"tl.request_mode"
+"FROM sys.dm_tran_locks AS tl"
+"INNER JOIN sys.databases db ON db.database_id = tl.resource_database_id"
+"INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address"
+"INNER JOIN sys.partitions AS p ON p.hobt_id = tl.resource_associated_entity_id"
+"INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id = tl.request_session_id"
+"INNER JOIN sys.dm_exec_connections ec2 ON ec2.session_id = wt.blocking_session_id"
+"CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1"
+"CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2";
SqlDataReader thisReader = thisCommand.ExecuteReader();
while (thisReader.Read())
{
Console.WriteLine("\t{0}\t{1}", thisReader["DBName"], thisReader["BlockedObjectName"]);
}
thisReader.Close();
thisConnection.Close();
}
catch (SqlException e)
{
Console.WriteLine(e.Message);
}
推奨事項:あなたのIDisposable 'SqlConnection'、' SqlCommand'と 'SqlDataReader'を適切な処分を確実にするために' using(....){...} 'ブロックに入れてください。できるだけ早く 'ExecuteReader'の直前にあなたの接続を開いてください。 –
SQLクエリで構文エラーを修正しました。 thisReader.Read()が実行された後、 "Enumeration yields no result"エラーが表示されるようになりました。なぜそれが –