2013-04-26 112 views
1

我有一個奇怪的錯誤,我無法解釋。基本上,我使用excel對我的SQL數據庫運行查詢,並且當我的數據庫中存在非常特定的順序時,彈出不存在的數據。Excel查詢顯示與SSMS查詢不同的結果

這裏是圍繞這一順序的簡單查詢:

SELECT * FROM OR200100其中OR200100.OR20001 = '0000793605'

以下是在EXCEL 輸出enter image description here

而這裏是SQL中的相同輸出 enter image description here

這裏發生了什麼?同一個查詢怎麼會產生兩個不同的結果?

+0

神聖的廢物,那些看起來像斯卡拉表。你確定*查詢是一樣的嗎?該訂單號在OR200100表中是否真的只有一條記錄? – LittleBobbyTables 2013-04-26 14:24:05

+0

別的什麼修改你的代碼以外的數據庫?因爲你大概在不同的時間運行這兩個查詢,你會得到不同的結果,這取決於其他地方發生的情況。 – 2013-04-26 14:24:33

+1

您的SQL結果缺少OR20002的值爲4的行 - 您可以檢查它是否應該在那裏? – PinnyM 2013-04-26 14:24:43

回答

1

如果可以,對數據庫運行SQL Server Profiler,然後將輸出與您在ssms中運行的sql查詢進行比較。

+0

我不能確認這件事,直到下週,看起來像我被鎖定了這種情況下的管理員權限。 – Hexxxer 2013-04-26 21:39:36

1

好的,所以它是SQL Server,那很重要,因爲不同的SQL產品可能有非常不同的特質和控制。

接下來的事情要檢查是這些:

  1. OR200100一個表或視圖?如果它是一個視圖,然後發佈它的代碼。

  2. 您是否使用Excel和SSMS中的相同登錄名/帳戶?

  3. 確保您連接到同一服務器和數據庫? SSMS告訴你你連接的是什麼,但是像Excel這樣的客戶端應用程序不會,並且這是非常常見的這種類型的問題是由連接到數據庫的Dev或QA版本的應用程序引起的。見here一些的,這可能發生在不同的方式:

+0

OR200100是一個表,它們都是相同的登錄名,只有一個服務器和一個數據庫連接到。我是200%積極的 – Hexxxer 2013-04-26 15:24:05

+0

好的,那麼我會傾向於#3。 – RBarryYoung 2013-04-26 15:24:39

+0

我可以告訴它的不是這些。 – Hexxxer 2013-04-26 21:38:06

0

所以我有一個非常類似的問題,我的查詢是由週數分組。我發現的是其中一個查詢已經設置了datefirst 5,而另一個沒有。我想這裏的關鍵是確保,如果您在ssms查詢中使用任何SET操作,則這些操作與Excel查詢字符串中的操作完全相同。