Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Не могу понять, откуда берутся дубликаты записей в БД: при создании новых записей insert они иногда дублируются, причём ошибки в самой программе, которая делает всатвку записей нет. Дубль записи появляется в течеие одной-нескольких секунд после оригинала и причём не всегда. Не могу отловить этот момент - когда? И как это побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 19:01 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
покажите скрипт который вставляет запись Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 19:33 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
автор //Saving strStat = Request.QueryString["stat"].ToString(); if (strStat == "new") { try { SqlCommand sqlCmd = new SqlCommand(); DateTime dtDatumsNo = new DateTime(); DateTime dtDatumsLi = new DateTime(); DateTime dtIzdosDatums = new DateTime(); CultureInfo inf = new CultureInfo("lv-LV", true); sqlCmd.Connection = sqlCnn; sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.CommandText = "_pusPA_addPolicyStandartOCTA"; sqlCmd.Parameters.Add("@Strukt_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@ApdrVeids_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@Numurs", SqlDbType.Int); sqlCmd.Parameters.Add("@Serija_ID", SqlDbType.VarChar, 2); sqlCmd.Parameters.Add("@Status_ID", SqlDbType.TinyInt); sqlCmd.Parameters.Add("@Agent_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@IpasnieksID", SqlDbType.Int); sqlCmd.Parameters.Add("@IpasnieksAdreseID", SqlDbType.Int); sqlCmd.Parameters.Add("@TuretaisID", SqlDbType.Int); sqlCmd.Parameters.Add("@TuretaisAdreseID", SqlDbType.Int); sqlCmd.Parameters.Add("@ApdrNemNosauk", SqlDbType.VarChar, 64); sqlCmd.Parameters.Add("@ApdrNemKods", SqlDbType.VarChar, 16); sqlCmd.Parameters.Add("@Auto_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@IzdosDatums", SqlDbType.DateTime); sqlCmd.Parameters.Add("@adv_id", SqlDbType.Int); sqlCmd.Parameters.Add("@DatumsNo", SqlDbType.DateTime); sqlCmd.Parameters.Add("@DatumsLi", SqlDbType.DateTime); sqlCmd.Parameters.Add("@DatumaLaiksNo", SqlDbType.VarChar, 5); sqlCmd.Parameters.Add("@Periods_ID", SqlDbType.SmallInt); sqlCmd.Parameters.Add("@AtlaideID", SqlDbType.VarChar, 4); sqlCmd.Parameters.Add("@KorpAtlaideID", SqlDbType.VarChar, 4); sqlCmd.Parameters.Add("@PersonAtlaide", SqlDbType.Decimal, 9); sqlCmd.Parameters.Add("@PiemaksaID", SqlDbType.VarChar, 4); sqlCmd.Parameters.Add("@BonusMalusID", SqlDbType.Int); sqlCmd.Parameters.Add("@ApdrPremija", SqlDbType.Decimal, 9); sqlCmd.Parameters.Add("@ApdrPremijaReal", SqlDbType.Decimal, 9); sqlCmd.Parameters.Add("@IpasieNosac", SqlDbType.VarChar, 1024); sqlCmd.Parameters.Add("@Lietotajs", SqlDbType.VarChar, 16); sqlCmd.Parameters.Add("@AgentsOld_ID", SqlDbType.VarChar, 16); sqlCmd.Parameters.Add("@AgentsOldNosauk", SqlDbType.VarChar, 64); sqlCmd.Parameters.Add("@Auto_Tips", SqlDbType.VarChar, 3); sqlCmd.Parameters.Add("@Operacija", SqlDbType.SmallInt); sqlCmd.Parameters.Add("@CsddMsg", SqlDbType.VarChar, 2); sqlCmd.Parameters.Add("@Polises_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@Message", SqlDbType.Int); sqlCmd.Parameters["@Strukt_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@ApdrVeids_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Numurs"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Serija_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Status_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Agent_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@IpasnieksID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@IpasnieksAdreseID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@TuretaisID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@TuretaisAdreseID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@ApdrNemNosauk"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@ApdrNemKods"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Auto_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@IzdosDatums"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@adv_id"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@DatumsNo"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@DatumsLi"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@DatumaLaiksNo"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Periods_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@AtlaideID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@KorpAtlaideID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@PersonAtlaide"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@PiemaksaID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@BonusMalusID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@ApdrPremija"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@ApdrPremijaReal"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@IpasieNosac"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Lietotajs"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@AgentsOld_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@AgentsOldNosauk"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Auto_Tips"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Operacija"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@CsddMsg"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Polises_ID"].Direction = ParameterDirection.Output; sqlCmd.Parameters["@Message"].Direction = ParameterDirection.Output; sqlCmd.Parameters["@Strukt_ID"].Value = Session["intStrukt_ID"].ToString(); sqlCmd.Parameters["@Lietotajs"].Value = Session["strLietotajs"].ToString(); sqlCmd.Parameters["@ApdrVeids_ID"].Value = 7111; sqlCmd.Parameters["@Numurs"].Value = txtPolNr.Text.ToUpper(); sqlCmd.Parameters["@Serija_ID"].Value = ddlPolSerija.SelectedValue.ToUpper(); sqlCmd.Parameters["@Status_ID"].Value = 2; sqlCmd.Parameters["@Agent_ID"].Value = intAgentID; if (tb1_7.Visible == true) { sqlCmd.Parameters["@IpasnieksID"].Value = objIpasniekKlientID; sqlCmd.Parameters["@IpasnieksAdreseID"].Value = objIpasniekKlientAdreseID; } else if (tb1_21.Visible == true) { sqlCmd.Parameters["@IpasnieksID"].Value = objIpasniekKlientID; sqlCmd.Parameters["@IpasnieksAdreseID"].Value = objIpasniekKlientAdreseID; } else { sqlCmd.Parameters["@IpasnieksID"].Value = DBNull.Value; sqlCmd.Parameters["@IpasnieksAdreseID"].Value = DBNull.Value; } if (tb2_3.Visible == true) { sqlCmd.Parameters["@TuretaisID"].Value = objTuretKlientID; sqlCmd.Parameters["@TuretaisAdreseID"].Value = objTuretKlientAdreseID; } else if (tb2_17.Visible == true) { sqlCmd.Parameters["@TuretaisID"].Value = objTuretKlientID; sqlCmd.Parameters["@TuretaisAdreseID"].Value = objTuretKlientAdreseID; } else { sqlCmd.Parameters["@TuretaisID"].Value = DBNull.Value; sqlCmd.Parameters["@TuretaisAdreseID"].Value = DBNull.Value; } sqlCmd.Parameters["@ApdrNemNosauk"].Value = clsUtils.ReplaceManyToOne(txtFizNemVardsUzvards.Text.ToUpper().Trim(), " "); sqlCmd.Parameters["@ApdrNemKods"].Value = clsUtils.ReplaceManyToOne(txtFizNemPersKods.Text.ToUpper().Trim(), " "); sqlCmd.Parameters["@Auto_ID"].Value = txtTransportID.Text; dtIzdosDatums = Convert.ToDateTime(txtPolIzdosDatums.Text.Substring(6,4) + "." + txtPolIzdosDatums.Text.Substring(3,2) + "." + txtPolIzdosDatums.Text.Substring(0,2), inf); sqlCmd.Parameters["@IzdosDatums"].Value = dtIzdosDatums; sqlCmd.Parameters["@adv_id"].Value = Session["intPolIzdosVietaID"]; dtDatumsNo = Convert.ToDateTime(txtPolDarbDatumsNo.Text.Substring(6,4) + "." + txtPolDarbDatumsNo.Text.Substring(3,2) + "." + txtPolDarbDatumsNo.Text.Substring(0,2), inf); sqlCmd.Parameters["@DatumsNo"].Value = dtDatumsNo; dtDatumsLi = Convert.ToDateTime(txtPolDarbDatumsLi.Text.Substring(6,4) + "." + txtPolDarbDatumsLi.Text.Substring(3,2) + "." + txtPolDarbDatumsLi.Text.Substring(0,2), inf); sqlCmd.Parameters["@DatumsLi"].Value = dtDatumsLi; ///!!!!!sqlCmd.Parameters["@DatumaLaiksNo"].Value = GetServerTime(); ///sqlCmd.Parameters["@DatumaLaiksNo"].Value = ddlHour.SelectedValue + ":" + ddlMin.SelectedValue; /*if (Convert.ToInt32(txtHour.Text) == 0) if (Convert.ToInt32(txtMin.Text) == 0) txtMin.Text = "01";*/ sqlCmd.Parameters["@DatumaLaiksNo"].Value = txtHour.Text + ":" + txtMin.Text; sqlCmd.Parameters["@Periods_ID"].Value = ddlPolApdrTermins.SelectedValue; if (ddlAtlaidesKods.SelectedValue == "1") sqlCmd.Parameters["@AtlaideID"].Value = ""; else if (ddlAtlaidesKods.SelectedValue == "2") sqlCmd.Parameters["@AtlaideID"].Value = "I"; else if (ddlAtlaidesKods.SelectedValue == "3") sqlCmd.Parameters["@AtlaideID"].Value = "L"; if (ddlKorpAtlaide.SelectedValue == "7") sqlCmd.Parameters["@KorpAtlaideID"].Value = "S"; else if (ddlKorpAtlaide.SelectedValue == "6") sqlCmd.Parameters["@KorpAtlaideID"].Value = "T"; else if (ddlKorpAtlaide.SelectedValue == "8") sqlCmd.Parameters["@KorpAtlaideID"].Value = "B"; else sqlCmd.Parameters["@KorpAtlaideID"].Value = "S"; sqlCmd.Parameters["@PersonAtlaide"].Value = ddlPersonAtlaide.SelectedValue; sqlCmd.Parameters["@PiemaksaID"].Value = ""; sqlCmd.Parameters["@BonusMalusID"].Value = DBNull.Value; //sqlCmd.Parameters["@ApdrPremija"].Value = txtPolApdrPremija.Text.Substring(0, txtPolApdrPremija.Text.Length - 3); //sqlCmd.Parameters["@ApdrPremijaReal"].Value = txtPolApdrPremijaReal.Text.Substring(0, txtPolApdrPremijaReal.Text.Length - 3); sqlCmd.Parameters["@ApdrPremija"].Value = txtPolApdrPremija.Text; sqlCmd.Parameters["@ApdrPremijaReal"].Value = txtPolApdrPremijaReal.Text; sqlCmd.Parameters["@IpasieNosac"].Value = clsUtils.ReplaceManyToOne(txtPolIpasiNosac.Text.ToUpper().Trim(), " "); sqlCmd.Parameters["@AgentsOld_ID"].Value = txtPolApdrParstavKods.Text; sqlCmd.Parameters["@AgentsOldNosauk"].Value = txtPolApdrParstavNosauk.Text.ToUpper(); sqlCmd.Parameters["@Operacija"].Value = 1; sqlCmd.Parameters["@CsddMsg"].Value = txtCsddKods.Text; sqlCmd.Parameters["@Auto_Tips"].Value = clsUtils.AssemblyAutoTips(Convert.ToInt32(ddlTransportVeids.SelectedValue), Convert.ToInt32(ddlTransportSpecif.SelectedValue), strPerson); if (sqlCnn.State == ConnectionState.Open) sqlCnn.Close(); sqlCnn.Open(); try { sqlCmd.Prepare(); sqlCmd.ExecuteNonQuery(); intMessage = Convert.ToInt32(sqlCmd.Parameters["@Message"].Value); if (intMessage == 0) { Session["intPolises_ID"] = Convert.ToInt32(sqlCmd.Parameters["@Polises_ID"].Value); //Save log of save new SqlConnection sqlCnn_ = new SqlConnection(); sqlCnn_.ConnectionString = WebApp.Class.clsConnect.sqlConnectionString(Session["strLogin"].ToString(), Session["strPass"].ToString()); SqlCommand sqlCmd_ = new SqlCommand(); sqlCmd_.Connection = sqlCnn_; sqlCmd_.CommandType = CommandType.StoredProcedure; sqlCmd_.CommandText = "_pusPA_saveOperLog"; sqlCmd_.Parameters.Add("@Polises_ID", SqlDbType.Int); sqlCmd_.Parameters.Add("@Lietotajs_ID", SqlDbType.Int); sqlCmd_.Parameters.Add("@Operacija_ID", SqlDbType.Int); sqlCmd_.Parameters["@Polises_ID"].Direction = ParameterDirection.Input; sqlCmd_.Parameters["@Lietotajs_ID"].Direction = ParameterDirection.Input; sqlCmd_.Parameters["@Operacija_ID"].Direction = ParameterDirection.Input; sqlCmd_.Parameters["@Polises_ID"].Value = Convert.ToInt32(Session["intPolises_ID"]); sqlCmd_.Parameters["@Lietotajs_ID"].Value = Convert.ToInt32(Session["intLietotajs_ID"]); sqlCmd_.Parameters["@Operacija_ID"].Value = 7; if (sqlCnn_.State == ConnectionState.Open) sqlCnn_.Close(); sqlCnn_.Open(); try { sqlCmd_.Prepare(); sqlCmd_.ExecuteNonQuery(); } catch (Exception exc) { string a = exc.Message; } finally { sqlCnn_.Close(); } //Save log of send data ro CSDD sqlCmd = new SqlCommand(); sqlCmd.Connection = sqlCnn; sqlCmd.CommandType = CommandType.StoredProcedure; sqlCmd.CommandText = "_pusPA_saveOperLog"; sqlCmd.Parameters.Add("@Polises_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@Lietotajs_ID", SqlDbType.Int); sqlCmd.Parameters.Add("@Operacija_ID", SqlDbType.Int); sqlCmd.Parameters["@Polises_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Lietotajs_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Operacija_ID"].Direction = ParameterDirection.Input; sqlCmd.Parameters["@Polises_ID"].Value = Convert.ToInt32(Session["intPolises_ID"]); sqlCmd.Parameters["@Lietotajs_ID"].Value = Convert.ToInt32(Session["intLietotajs_ID"]); sqlCmd.Parameters["@Operacija_ID"].Value = 13; if (sqlCnn.State == ConnectionState.Open) sqlCnn.Close(); sqlCnn.Open(); try { sqlCmd.Prepare(); sqlCmd.ExecuteNonQuery(); } catch (Exception exc) { string a = exc.Message; } finally { sqlCnn.Close(); } } else { Session["intPolises_ID"] = 0; } } catch (Exception exc) { string a = exc.Message; return 70003; } finally { sqlCnn.Close(); } return intMessage; } catch (Exception exc) { string a = exc.Message; return 70003; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2004, 21:00 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Включите sql-профайлер и посмотрите какие sql-команды выполняются на серевере в момент вызова этого кода. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 09:39 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Посмотрел. Когда я работаю, всё отлично! Если бы всё было так просто... Неужели ни у кого никаких идей? Может быть это может происходить, что иногда у юзера плохой коннект, а все проверки и процедура срабатывают не так быстро, и он успевает несколько раз нажать кнопку сохранения или Refresh?... Теряюсь в догадках. Т.к. это тоже пробовал - вроде то же самое - всё ок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 12:53 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Хранимую процедуру вы написали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 18:16 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Да, я. Меня сейчас больше волнует вопрос: у ASP.NET в каких случаях могут при посте формы на сервер производиться транакзции по нескольку раз, в то время как необходима одна? Думаю, так вопрос корректнее будет звучать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 18:36 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Извините дурака, что потревожил. Нашёл я абсолютно детскую ошибку - сам не ожидал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2004, 21:41 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
AchillesИзвините дурака, что потревожил. Нашёл я абсолютно детскую ошибку - сам не ожидал... Если не трудно - не могли бы Вы объяснить, в чем ошибка? Просто у меня примерно пол-года назад была точно такая же ошибка (при добавлении новых записей иногда возникали "дубликаты"). Я так и не понял тогда, в чем дело. А сейчас увидел Ваше сообщение и заинтересовался - в чем было дело? У меня была какая-то бета версия VS Whidbey, и я грешил именно на то, что это все-таки бета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2005, 01:15 |
|
||
|
Появление дубликатов в базе
|
|||
|---|---|---|---|
|
#18+
Абсолютно собственная ошибка! При проверке клиента в базе на сохранении формы происходит проверка по его коду. Так вот в процедуре длина переменной типа VARCHAR принимаемого параметра была изначально происана заведомо меньше, чем она есть в сущности. Соответственно никогда клиент с таким кодом не находился, так как он просто обрезался. Соответственно и заводились дубликаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 10:16 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=32849460&tid=1394745]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 415ms |

| 0 / 0 |
