SQL データを ac# アプリケーションに取得するときに、いくつかの奇妙な動作に気付きました。データセット xsd を使用しましたが、これがタイムアウトし始めました。その後、試みた他の操作のデータテーブルを生成して返すクラスが既にあったため、アプローチを変更しました。これもタイムアウト。
SSMS でアクティビティ モニターを開いて、コードが実行されたときに SQL で何が起こっていたかを把握していましたが、fill コマンドをどのように実行しても、SQL サーバーが 100% CPU でピークに達し、コマンドが実行されるまでそこにとどまることに気付きました。キャンセルされます。これは、240Ghz のプロセッサーと 30GB の RAM を搭載した優れたサーバーです。クエリは正確ではありませんが、SSMS で 3 秒以内に 10 万行を返します。
データセットのコードは次のとおりです。
public DataTable UKDataRefresh ()
{
UKREFRESH.UKNewContactsDataTable dt =
new UKREFRESH.UKNewContactsDataTable();
UKREFRESHTableAdapters.UKNewContactsTableAdapter ta =
new UKREFRESHTableAdapters.UKNewContactsTableAdapter();
ta.Connection.ConnectionString += ";Password = xxxxxx;";
try
{
ta.Fill(dt, global::SilverPopTransfer.Properties.Settings.Default.UKDATELASTACTION);
}
catch (SqlException )
{
throw;
}
return dt;
}
オンザフライでビルドするためのコードは次のとおりです。
public DataTableOperations (string strconnection, string strSelect,string tablename)
{
SqlConnection c = new SqlConnection(strconnection);
connection = c;
SqlDataAdapter da = new SqlDataAdapter(strSelect, connection);
DataSet ds = new DataSet();
//added this to see what would happen.
da.SelectCommand.CommandTimeout = 0;
connection.Open();
da.Fill(ds, tablename);
connection.Close();
Datatable = ds.Tables[tablename];
_disposed = false;
}
完全な解決策ではなく、問題の原因についての手がかりを探しています。
ちなみに、投稿する前に既存のコンソール アプリケーションで同様の機能を実行したところ、接続してエラーなしで実行されました。クエリはほとんど同じでした。
唯一の違いは、既存のアプリケーションでは統合セキュリティを使用することですが、この場合はユーザーとパスワードを指定します。ログイン資格情報を確認しました。