Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Таймаут при вставке в темповую таблицу  [new]
new dev
Member

Откуда:
Сообщений: 36
Добрый день.

Столкнулся с такой проблемой. В приложении данные из текстового файла загружаются в датасет, после чего генерятся вот такие инсерты в темповую таблицу:

sql="Create Table  #tmp (col1 varchar(255),col2 varchar(255),col3 int,col4 varchar(255),col5 varchar(5))";

cmd.CommandText =sql;
cmd.ExecuteNonQuery();

//Copy new data
foreach (DataRow dr in dt.Rows)
{
     col1_var=dr[0].ToString();
     col2_var=dr[1].ToString();
     col3_var=dr[2].ToString();
     col4_var=dr[3].ToString();
     col5_var=dr[4].ToString();
     sql = "Insert into #tmp values('" + col1_var + "','" + col2_var.Replace("'","''") + "','" + col3_var + "','" + col4_var + "','" + col5_var + "')";
     cmd.CommandText =sql;
     int vlaue = cmd.ExecuteNonQuery();
}

Записей около 55 тысяч. Вчера этот код падал по таймауту, смотрел в профайлере: за минуту успевает только пару тысяч строк вставить, причем на некоторые инсерты duration стоял несколько секунд. В tempdb не выявил ничего подозрительного, очереди к диску не было (иногда всплески на пару секунд только). После рестарта sql server'а проблема осталась. В конце концов вчера на продакшене этот код выполнился, но на тесте проблема осталась. Вроде бы простая операция, а работает ну уж очень медленно. Может кто-нибудь сталкивался с подобной проблемой? Посоветуйте в каком направлении еще покопать
30 июн 09, 12:26    [7358354]     Ответить | Цитировать Сообщить модератору
 Re: Таймаут при вставке в темповую таблицу  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
хм. таймаут ваш клиентский и совсем не понятно где он у вас произошёл.
сериализуйте в хмл , передайте серверу , а там уж в темповую таблицу лейте. 55тыс. для раскрутки из хмл будет не быстро.
может быть лучше заюзать bcp или SSIS для заливки данных.
30 июн 09, 12:39    [7358447]     Ответить | Цитировать Сообщить модератору
 Re: Таймаут при вставке в темповую таблицу  [new]
new dev
Member

Откуда:
Сообщений: 36
Этот код работает давно, проблема только вчера возникла. Кроме того, профайлер показывает, что за секунду вставляется только около 100 записей. Кроме того, в последнее время были проблемы в сетью. Похоже что данные с клиента идут намного медленнее чем обычно, и sql server тут нипричем.
30 июн 09, 12:52    [7358530]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить