共用方式為


逐步解說:偵錯延伸預存程序

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

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

Standard 版

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

Pro/Team 版

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

表格圖例:

標題適用於

套用

標題不適用於

不套用

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

預設隱藏的命令。

警告:

已取代延伸預存程序。雖然在 ASP.NET 中仍然以回溯相容性 (Backward Compatibility) 繼續支援它們,但是在未來的發行版本中將要移除支援。

原本引進延伸預存程序是為了能夠執行在 T-SQL 中不能執行的動作,例如存取檔案系統、讀取登錄等。現在您可以撰寫 SQL CLR 程序來執行這些動作,再也不必撰寫延伸預存程序了。強烈建議您不要再撰寫新的「延伸預存程序」,並且考慮使用對等但更安全的 SQL CLR 預存程序取代現有的程序。

延伸預存程序是以 C++ 或 SQL 以外的其他任何語言撰寫的 DLL。因此,偵錯延伸預存程序非常類似偵錯以該語言所寫的任何 DLL。

警告:

「延伸預存程序」通常是使用原生 C++ 撰寫,缺少 Managed 程式碼所提供的保護。因為錯誤可能會損毀 SQL Server,所以應該小心測試這些程序。若要避免可能遺漏資料和其他問題,請不要在實際執行伺服器上偵錯延伸預存程序。如需詳細資訊,請參閱 ASP.NET 線上叢書。

您所看見的對話方塊與功能表命令可能會與 [說明] 中所描述的有所不同,視您所使用的設定或版本而定。若要變更設定,請在 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

若要偵錯延伸預存程序

  1. 以延伸預存程序 DLL 的偵錯組建啟動。您也需要一個應用程式,來呼叫要偵錯的延伸預存程序。如果目前還沒有應用程式,請執行下列其中一個動作:

    • 使用資料庫的資料連接來建立 Visual Studio 資料庫專案,而此資料庫中包含延伸預存程序,以及呼叫延伸預存程序的程式碼。

    • 建立可呼叫延伸預存程序的 SQL 指令碼檔。

      -或-

    • 使用一個像 ISQL/W (包含於 SQL Server) 或 ODBC Test (包含於 ODBC SDK) 的應用程式。

  2. 如果 SQL Server 目前正以服務方式執行,請開啟 [服務] 控制台,選取 [SQL Server],並按一下 [停止] 將它停止。

  3. 將 DLL 的偵錯版本複製到 sqlservr.exe 所在的目錄或搜尋路徑的任何目錄中。

    -或-

    設定建置後事件,以便複製 C++ 專案中的 DLL,如下所示:

    1. 開啟 [<專案> 屬性頁] 對話方塊。

    2. 在 [<專案> 屬性頁] 對話方塊中,開啟 [組態屬性] 資料夾。

    3. 在[組態屬性] 下,開啟 [建置事件] 資料夾。

    4. 選取 [建置後事件]。

    5. 在方格控制項中 [命令列] 的旁邊,輸入複製命令,例如下列範例:

      Copy c:\MyProjects\MyXProc\debug\MyXProc.dll C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn

  4. 登錄延伸預存程序。

  5. 指定 SQL Server 做為延伸預存程序 DLL 的呼叫執行檔和工作目錄。修改 [<Project> 專案屬性] 對話方塊中的設定,您可在 [組態屬性] 的 [偵錯] 分類中存取這個對話方塊,如下所示:

    • 如果 SQL Server 已安裝於預設位置,請在 [命令] 方塊內輸入 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\SQLSERVR.EXE。

    • 將 [工作目錄] 項目設定為 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn。

    • 將 [命令引數] 項目設為 -c-c 選項會向 SQL Server 表示是從命令列啟動它,而且不是做為服務,讓 SQL Server 可以更快啟動。SQL Server 啟動後並不是做為服務,而是做為 Visual Studio 偵錯環境控制之下的主控台應用程式 (Console Application)。如此一來,就可以正確截獲和處理中斷點。

  6. 在延伸預存程序的原始程式碼內設定中斷點。

  7. 使用執行命令來啟動偵錯工作階段 (Session)。如需詳細資訊,請參閱執行控制項

    主控台視窗將在 SQL Server 啟動時出現。當文字捲動停止時,最後的訊息將告訴您:

    啟動程序 'sp_sqlregister' 已啟動

    SQL Server 將啟動並開始處理要求。

  8. 執行延伸預存程序。

    當偵錯工具遇到包含中斷點的那一行時便會中斷。

    如需如何編寫延伸預存程序的其他秘訣,請參閱 Microsoft 知識庫 (Knowledge Base) 的<SQL Server>章節,或 MSDN Library 的 SQL Server 文件中的<撰寫延伸預存程序>章節。

請參閱

概念

偵錯 SQL