文章編號: 817178 - 上次校閱: 2007年6月1日 - 版次: 2.5

T-SQL 偵錯工具在 Visual Studio.NET 中的疑難排解秘訣

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

結論

本文包含指導方針和疑難排解與 Microsoft Visual Studio.NET 中的 T-SQL 偵錯工具相關的基本問題的指示進行。不過,這不是詳盡清單,而且可能您環境的特定某些問題。取得更多資訊有關 T-SQL 偵錯按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件]:
316549? (http://support.microsoft.com/kb/316549/ ) 如何偵錯 Visual Studio.NET 中的預存程序
如需有關啟用 SQL 偵錯的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/s0fk6z6e(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/s0fk6z6e(vs.71).aspx)

其他相關資訊

T-SQL 偵錯工具的疑難排解

請使用下列方法協助疑難排解 T-SQL 偵錯工具在 Visual Studio.NET 中:
  • 請確定在伺服器電腦上啟動遠端程序呼叫 (RPC) 服務。要這麼做,請您執行下列步驟:
    1. 在控制台中 服務,] 上按一下滑鼠右鍵,然後按一下 [開啟舊檔]。
    2. 請檢查以確定正在執行 遠端程序呼叫 (RPC)遠端程序呼叫 (RPC) 定位程式 服務,然後將設為自動啟動這些服務。
  • 請確定 T-SQL 偵錯工具使用者帳戶具有讀取,而且 SQL 偵錯] 資料夾中的執行偵錯工具元件的權限。[SQL 偵錯] 資料夾位於下列位置:
    共用程式 Files\Common Files\Microsoft
    如果使用者帳戶不具有這些權限,您會收到下列的錯誤訊息:
    無法啟動 T-SQL 偵錯工作階段。請確定 sqldbreg2.exe 和 Proxy/虛設常式 DLL sqldbg.dll 登錄在此機器上。
  • 請確定預存程序名稱並不包含任何的引號。

    如需有關發生當您偵錯程序的名稱中包含引號的錯誤的詳細資訊,請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/abk849z6(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/abk849z6(vs.71).aspx)
  • 請確定預存程序並不包含具有 16 或更高的嚴重性會引發任何錯誤的 RAISERROR 陳述式。 如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    280099? (http://support.microsoft.com/kb/280099/ ) 注意: Transact-SQL 偵錯工具無法偵錯預存程序該包含 RAISERROR 陳述式,會引發任何錯誤與 16 或更高的嚴重性
  • 檢查事件檢視器中的 T-SQL 偵錯工具錯誤記錄。

    如需詳細資訊請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/hcez68k4(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/hcez68k4(vs.71).aspx)
  • T-SQL 偵錯工具會使用分散式 COM (DCOM) 用戶端電腦和資料庫伺服器之間進行通訊。最好設定 DCOM 以允許遠端使用者將偵錯工具附加至資料庫伺服器上的處理序。如果 DCOM 權限設定不正確,可能會發生問題。

    如需關於 DCOM 權限設定的詳細資訊,請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/s0t6w6kc(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/s0t6w6kc(vs.71).aspx)
    http://msdn2.microsoft.com/en-us/library/6ksc0a82(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/6ksc0a82(vs.71).aspx)
    http://msdn2.microsoft.com/en-us/library/aa291270(VS.71).aspx (http://msdn2.microsoft.com/en-us/library/aa291270(VS.71).aspx)
  • 如果您安裝 SQL 遠端偵錯之後安裝新版的 Microsoft SQL Server,您必須執行遠端元件安裝程式,來確定您有正確安裝遠端偵錯的元件。

    如需有關 SQL 遠端偵錯的詳細資訊,請造訪下列 MSDN 網站:
    http://msdn2.microsoft.com/en-us/library/bt727f1t(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/bt727f1t(vs.71).aspx)
    http://msdn2.microsoft.com/en-us/library/ey7ec813(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/ey7ec813(vs.71).aspx)
  • 檢查應用程式事件日誌與系統事件記錄檔,正在執行 SQL Server 的電腦上。要這麼做,請您執行下列步驟:
    1. 在控制台中按兩下 [系統管理工具]。
    2. 按兩下 [事件檢視器]。在 [事件檢視器] 視窗中您會看到應用程式事件記錄檔和系統事件記錄檔。
  • 要在 Visual Studio 中正常運作的 T-SQL 偵錯工具的.NET]、 [電腦名稱] 和 [SQL Server 安裝名稱必須相符。如果您重新命名 SQL Server 安裝,電腦名稱與 SQL Server 安裝名稱不符,T-SQL 偵錯工具就會失敗。 如需詳細資訊按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
    817253? (http://support.microsoft.com/kb/817253/ ) PRB: 無法偵錯 Visual Studio.NET 中的預存程序,重新命名 SQL Server 之後

    317241? (http://support.microsoft.com/kb/317241/ ) PRB: 重新命名為 SQL Server 的主機電腦會造成失敗的預存程序偵錯
  • 請確認在 T-SQL 偵錯工具工作階段已啟動從終端機伺服器用戶端工作階段。終端機伺服器用戶端連線到已安裝 Microsoft SQL Server 2000 的終端機伺服器時,沒有可用 T-SQL 偵錯工具偵錯選項。偵錯預存的程序,從這台透過終端機伺服器工作階段的終端機用戶端電腦就無法使用。

    終端機伺服器應用程式事件日誌中的錯誤訊息會類似下列的錯誤訊息:
    無法連線到 %SQLSERVER_MACHINENAME %(Error = 0x80070057 The parameter is incorrect.上偵錯工具 ). 例如 SQLLE.DLL 安裝以及在 %SQLSERVER_MACHINENAME %上註冊請確定該用戶端端元件。停用連線 54 的偵錯。
    如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    280100? (http://support.microsoft.com/kb/280100/ ) 注意: Transact-SQL 偵錯工具不可以透過 「 終端機伺服器工作階段
  • 請確認您有具有相同名稱的兩個預存程序。一個預存程序由資料庫擁有者 (DBO) 所擁有,並且由非 DBO 使用者擁有其他預存程序。如果您兩個預存程序,有相同的名稱,但有不同的擁有者都不在使用者可以藉由使用 T-SQL 偵錯工具逐步執行預存程序。如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    296539? (http://support.microsoft.com/kb/296539/ ) 注意: T-SQL 偵錯工具並不允許有同名的非 DBO 使用者所擁有逐步執行預存程序
  • 請確定您是您嘗試偵錯預存程序的擁有者。您無法在 T-SQL 偵錯工具中偵錯您沒有這樣的預存程序擁有安裝 Microsoft SQL Server 2000 Service Pack 3 (SP3) 之後。當您進行偵錯不由您所擁有的預存程序可能會收到類似下列的錯誤訊息:
    伺服器: 訊息 229、 層級 14、 狀態 5、 程序 sp_sdidebug、 行 1 [Microsoft] [ODBC SQL Server 驅動程式] [SQL Server] EXECUTE 權限在物件 'sp_sdidebug'、 資料庫 'dbname'、 擁有人 'ownername' 被拒絕。
    如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
    328173? (http://support.microsoft.com/kb/328173/ ) PRB: 資料庫使用者無法進行偵錯其他使用者擁有的預存程序
  • 請確定您有執行權限在預存程序的偵錯。當您不具有執行權限在預存程序的偵錯時,會收到類似下列的錯誤訊息:
    伺服器: 訊息 229,等級 14 狀態 5,程序 sp_sdidebug 行 1 [Microsoft] [ODBC SQL Server 驅動程式] [SQL Server] EXECUTE 物件 'sp_sdidebug'、 資料庫 'dbname'、 擁有人 'dbowner' 上的權限被拒絕。
    若要授與使用權限執行預存程序偵,在 Query Analyzer 中執行下列命令錯:
    GRANT EXECUTE
    ON sp_sdidebug 
    TO <myUserName>
    
  • 如果您的伺服器是 Microsoft SQL Server 2000 SP3,您必須執行下列:
    EXECUTE  sp_sdidebug 'LEGACY_ON' 
    在您電腦上且執行 SQL Server 每次啟動。您可以以手動方式從執行查詢分析。這是新的安全性參數在 SP3 中已加入。
  • 若要確定能正常運作 T-SQL 偵錯工具,測試 SQL Server 的安裝位置在同一部電腦上的 [T-SQL 偵錯工具] 如果可以的話。
  • 它不是很好的作法在生產伺服器上使用 T-SQL 偵錯工具。在步驟執行模式偵錯工具可以鎖定其他處理程序必須存取特定系統資源。
  • 請確定您有正確版本的 T-SQL 偵錯工具元件檔案。
    • 伺服器元件包括 Mssdi98.dll 和 Sqldbg.dll。
    • 用戶端元件包括 Sqldbreg.exe 和 Sqldbg.dll。
    Mssdi98.dll 檔案應該在與 Sqlservr.exe 檔案相同的資料夾。預設情況下,Mssdi98.dll 會在 BINN] 資料夾中。預設情況下,Sqldbg.dll 和 Sqldbreg.exe 是 SQL 偵錯] 資料夾中。SQL 偵錯] 資料夾會位於下列位置:
    共用程式 Files\Common Files\Microsoft

?考

如需詳細資訊按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
170496? (http://support.microsoft.com/kb/170496/ ) 偵錯預存程序從 Visual Basic 的秘訣
310650? (http://support.microsoft.com/kb/310650/ ) Visual Basic T-SQL 偵錯工具與 SQL Server 2000 的已知的問題
280101? (http://support.microsoft.com/kb/280101/ ) Transact-SQL 偵錯工具限制和 SQL Server 2000 的疑難排解秘訣
如需有關偵錯 SQL 的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站:
http://msdn2.microsoft.com/en-us/library/zefbf0t6(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/zefbf0t6(vs.71).aspx)

這篇文章中的資訊適用於:
  • Microsoft Visual Studio .NET 2003 專業版
  • Microsoft Visual Studio .NET 2003 Enterprise Architect
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
  • Microsoft Visual Studio .NET 2003 Academic Edition
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbtshoot kbdebug kbtsql kbinfo KB817178 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:817178? (http://support.microsoft.com/kb/817178/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。