Я заметил какое-то странное поведение при получении данных SQL в приложении С#. Я использовал набор данных xsd, но время истекло. Затем я изменил свой подход, поскольку у меня уже был класс, который генерировал и возвращал данные для других операций, которые я пробовал. Это слишком истекло.
Я открыл Монитор активности в SSMS, чтобы получить представление о том, что происходит в SQL, когда код запускался, и заметил, что каким бы способом я его ни запускал, команда заполнения приводит к тому, что SQL-север достигает пика на 100% ЦП и остается там до тех пор, пока команда отменяется. Это хороший сервер с большим количеством мощных процессоров 240 ГГц и 30 ГБ оперативной памяти. Запрос не совсем быстрый, но возвращает 100 тыс. строк менее чем за 3 секунды в SSMS.
Вот мой код для набора данных:
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;
}
Я ищу подсказки относительно того, что может вызвать проблему, а не полное решение.
Между прочим, перед публикацией я запустил аналогичную функцию в уже существующем консольном приложении, и оно подключилось и запустилось без ошибок: запрос был почти идентичен.
Единственная разница в том, что для уже существующего приложения я использую встроенную безопасность, но в этом случае я указываю пользователя и пароль. Я подтвердил учетные данные для входа.