共用方式為


偵錯工具命令和功能的限制

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

標題不適用於 標題不適用於 標題不適用於 標題不適用於

Standard 版

標題不適用於 標題不適用於 標題不適用於 標題不適用於

Pro/Team 版

標題適用於 標題適用於 標題適用於 標題適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

預設會套用主題但隱藏命令

預設隱藏的命令。

SQL 偵錯工具提供許多但並非全部通用的偵錯功能。SQL 偵錯可支援大多數的偵錯工具命令,例如設定中斷點和逐步執行。您可在 [區域變數] 視窗內檢視變數和傳遞之參數的數值。您也可將運算式拖曳到 [監看式] 視窗內,以便在逐步執行或執行程序時追蹤它們。

但是,由於 SQL Server 本身的某些基本特性,偵錯 SQL 會發生在差異很大的環境中。某些偵錯限制只適用於 T-SQL 偵錯或 SQL CLR 偵錯。其他限制適用於所有 SQL 偵錯。

SQL 偵錯的一般限制

  • 不能使用 [編輯後繼續]。

  • 不能在 [呼叫堆疊] 視窗中使用 [執行至游標處]。

  • 不能在處理 SQL 陳述式時使用 [中斷]。

  • SQL PRINT 陳述式的輸出並不會出現在偵錯工具或 [資料庫輸出] 窗格內。

  • 無法在 Visual Studio 中使用 [AutoRollback]。如果重現變更資料的錯誤,可能會因為資料變更而遺失錯誤。

  • 有幾個視窗不是無法使用就是不提供任何功能。這些視窗是:

    • 記憶體

    • 暫存器

    • T-SQL 的反組譯碼

T-SQL 偵錯限制

  • 不支援中斷點條件和篩選條件。

  • 因為 SQL 並沒有真正的記憶體或暫存器,您不能使用 [記憶體] 視窗或 [暫存器] 視窗。

  • 不能使用 [設定下一個陳述式] 來變更執行順序。必須遵循 SQL 程式碼中的流程控制和陳述式順序。您可以將控制陳述式圍繞 SQL 程式碼區塊,然後變更變數的值,做為一種解決方法。

  • 無法從 T-SQL 物件內部存取任何 .Net Framework 變數或屬性。

  • 隨即顯示 [即時運算] 視窗,但是無法使用這個視窗執行任何有用的動作,例如將變數設定為值或查詢資料庫。

  • 有幾個視窗不是無法使用就是不提供任何功能。這些視窗是:

    • 反組譯碼

    • 執行緒

    • 暫存器

    • 處理序

    • 模組

SQL CLR 偵錯限制

  • 每個伺服器只能發生一個 SQL CLR 偵錯工作階段,因為在進行任何 SQL CLR 偵錯時,會凍結所有 SQL CLR 程式碼的執行。基於這個原因,偵錯工具使用者必須是 SQL 系統管理員,以便執行 SQL CLR 偵錯。

  • SQL CLR 偵錯永遠不應該在實際執行伺服器上進行。SQL CLR 偵錯是有風險的:SQL CLR 偵錯工具可以讀取和寫入處理序記憶體,並且可以在伺服器處理序中執行任意程式碼。這會導致停止伺服器上所有的 Managed 執行緒。並且當您結束偵錯工作階段時,SQL Server 可能會中止。

  • 在 CLR SQL 物件內,無法存取像是 @@ROWCOUNT 的全域 SQL 變數。

  • 在 Visual Studio SQL Server 專案中,您只能夠將 .NET Framework 其中一部分的類別庫加入參考,並不能隨意參考任何組件。

請參閱

概念

SQL 偵錯限制

偵錯 SQL