我有一個ASP.Net Web窗體應用程序,它使用SqlCommand並使用ExecuteNonQuery方法將新記錄(請求)插入到SQL Server表中。該表具有爲Identity Specification = Yes,Identity Increment 1,Identity Seed 1設置的單個主鍵(int id)。該應用程序已運行多年。大約一個月前,數據庫從物理服務器移動到虛擬服務器,沒有任何明顯的問題。數據庫正在SQL Server 10.50.1617.0上運行。在具有標識列的SQL Server中重複記錄
最近,用戶報告創建了大約90個請求,但無法找到它們。當我檢查請求表時,我只能找到在過去幾天爲她創建的一個請求。請求表上的最高ID是5404.作爲一個實驗,我讓她創建了一個新的請求。我期待它創建一個新的ID爲5405,但它實際上創建了一個ID爲2975.我讓她創建另一個請求,並在ID爲2975的第二個請求與另一個請求重寫。我創建了一個測試請求,它創建了一個在身份證5405。什麼可能導致這種情況?
這裏是C#中插入:
string sql = "insert into requests (end_user_email) values (@email)";
SqlConnection cn = new SqlConnection(_cnString);
SqlCommand cmdIns = new SqlCommand(sql, cn);
cmdIns.Parameters.Add("@email", SqlDbType.NVarChar);
cmdIns.Parameters["@email"].Value = email;
cmdIns.Connection.Open();
cmdIns.ExecuteNonQuery();
您所描述的內容與您在此處顯示的代碼沒有出現。我建議你有一個觸發器來查找插入,並在表上進行更新。 – paqogomez
它實際上重新創建了2975還是隻是更新它?它是如何移動的?聽起來像一個問題與身份屬性可能或她可能做一個更新,而不是插入。這是發生在所有請求還是隻是這些? – jensendp
我會建議與你的DBA聽起來像是當DataBase被移動,一些腳本不運行時,這不是一個代碼問題,它是一個數據庫相關的問題 – MethodMan