我第一次遇到這個問題: 1)在生產數據庫上查詢需要永久完成 2)我需要備份數據庫,我的筆記本電腦調試:查詢工作正常,並在1秒內返回在數據庫上查詢失敗,但在恢復備份後工作正常
我的直覺是有些東西是損壞的(如索引),這從來沒有發生過我,所以我只是猜測。
您能否建議一種方法來檢查這種錯誤?
僅供參考我粘貼查詢,但它沒有多大意義。
在生產分貝,如果我完全刪除CROSS之後申請查詢的子查詢執行罰款:
SELECT
CA.ID_CESPITE, CASE WHEN child.count > 0 THEN 'Y' ELSE 'N' END AS HAVE_CHILD_PRG,
CA.ID_CESPITE_PADRE,
CA.ID_TIPO_CESPITE,
CA.COD_CESPITE,
CA.DESCR_CESPITE,
CA.ID_STATO_CESPITE,
CA.ID_REFERENTE,
VUD.ID_UTENTE AS ID_UTENTE_RESPONSABILE,VUD.ID_DIPENDENTE,
ISNULL(CP.V, 'N') AS V,
ISNULL(CP.O, 'N') AS O,
ISNULL(CP.I, 'N') AS I,
ISNULL(CP.A, 'N') AS A,
CTCS.ID_TIPO_CESPITE AS ID_TIPO_CES, 0 AS LEVELO,
CA.PROF_ID,CA.ISLOCKED,CTCS.DESCR_TIPO_CESPITE
FROM
CES_ANAGRAFICA CA LEFT OUTER JOIN CES_PERMESSI CP ON ((CA.ID_CESPITE = CP.ID_CESPITE) AND (CP.ID_UTENTE = 4654))
LEFT JOIN CES_TIPI_CESPITE CTCS ON CA.ID_TIPO_CESPITE = CTCS.ID_TIPI_INFRSTR
LEFT OUTER JOIN V_UTENTI_DIPENDENTI VUD ON CA.ID_RESPONSABILE = VUD.ID_DIPENDENTE
CROSS APPLY ( SELECT [Count] = COUNT(*) FROM V_CESPITE_TREE VCA JOIN MAN_PRG_OPERAZIONI MPO
ON MPO.ID_CESPITE = VCA.ID_CHILD WHERE VCA.ID_PARENT = CA.ID_CESPITE AND MPO.ID_FATHER is not null) child
我正準備找上我的筆記本電腦工作的問題,但我感到驚訝的是在還原備份後(到新的測試數據庫)都按預期工作。
我希望我表達自己。
檢查它正在等待什麼以及是否被阻止。在查詢運行時,在另一個窗口中:SELECT session_id的status_type,status,blocking_session_id FROM sys.dm_exec_requests;'。 – 2014-10-29 21:15:57
您的生產服務器的維護計劃是否包含更新統計信息? SQL可能會根據陳舊的啓發式方法優化您的查詢。 – Brandon 2014-10-29 22:05:11
我感謝你的想法,但最終的決定是在新的安裝od sql server上恢復備份以快速解決問題。我很抱歉,因爲我無法理解發生了什麼。 – LaBracca 2014-10-30 07:36:24