2013-05-22 62 views
0

我在MSSQL服務器上發現了一個奇怪的現象。結果集中的雙記錄

讓我們說我們有一個表:

CREATE TABLE [testTable] 
(
    [ID] [numeric](11, 0) NOT NULL, 
    [Updated] [datetime] NULL, 
    PRIMARY KEY (ID) 
); 

我做一個簡單的基於新的領域選擇:

SELECT TOP 10000 ID, Updated 
FROM testTable 
WHERE Updated>='2013-05-22 08:55:12.152' 
ORDER BY Updated 

而現在到了有趣的部分:我怎麼能有結果集雙記錄 - 我的意思是具有不同更新值的2條記錄中的相同ID。

對我來說,它似乎是,更新的日期時間值已更改,它被包括在結果集中多一次。但是有可能嗎?

更新:我使用了從SQL服務器下載數據 的源代碼:

using (SqlCommand cmd = new SqlCommand(sql, Connection) { CommandTimeout = commandTimeout }) 
{ 
    using (System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd)) 
    { 
     DataTable retVal = new DataTable(); 
     adapter.Fill(retVal); 
     return retVal; 
    } 
} 

連接=的SqlConnection

SQL = 「SELECT TOP 10000 ......」

+2

看看你的數據庫,那裏肯定沒有重複的ID –

+0

@Damien_The_Unbeliever然後也...第二次插入應該失敗,因爲ID是主鍵 –

+0

如果完整性失敗,它應該是第一個問題開始而不是假設它可以接受重複的PK。如果主鍵不起作用,可能試圖刪除整個表並重新創建它將會是一個解決方案。 –

回答

0

您的問題似乎缺少一些細節,但這裏是我的想法。

我想的是,你在某種程度上兩次選擇這些ID的第一種情況(可能是通過加入組,...)。請手動檢查您的表內(MSSQL服務器,而不是內部的函數或方法),看看是否有重複的ID。如果有,問題是您的主鍵尚未正確設置。否則,您將需要提供所有用於選擇數據的相關代碼,以獲得更多幫助。

另一種情況可能是,某人或某事改變了主鍵,所以它是在兩個IDUpdated,允許兩倍長的Updated字段不匹配也被插入相同的ID。

你也可以嘗試這個查詢,看它是否被dupplicated您的上下文中的ID:

SELECT ID 
from testTable 
ORDER BY ID 

我希望這有助於。

+0

謝謝你的幫助。我發佈了相關的源代碼。數據庫中沒有重複的行,我只是通過簡單的select命令獲得它們 - 一個表,沒有連接,沒有分組。 – HoGo

+0

如果數據庫是正確的,那麼問題出現在我的C#代碼中,我仔細看看你是如何實際執行SQL查詢的。 –