修正: 當您在 SQL Server 2005 中或在 SQL Server 2008 中的 SQL 伺服器代理程式作業的步驟中執行的 TRANSACT-SQL 指令碼時,TRANSACT-SQL 指令碼的結果可能會被截斷

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:955695
本文已封存。本文係以「現狀」提供且不會再更新。
重要 本文包含如何修改登錄的相關資訊。請確定在修改前備份登錄。請確定您知道如何在發生問題時還原登錄。如需有關如何備份、 還原及修改登錄的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
322756 如何備份和還原 Windows 中的登錄
Microsoft 為一個可下載檔案散佈 Microsoft SQL Server 2005 的修正程式。修正程式是累積的因為每個新版本包含所有的 hotfix 並隨附於先前的 SQL Server 2005 所有安全性修正程式都修正版本。
徵狀
請考慮下列案例。
  • 在 Microsoft SQL Server 2005 中或在 SQL Server 2008 中,您在 SQL Server 代理程式工作中的一個步驟中執行 TRANSACT-SQL 指令碼。
  • 在步驟中,第一個陳述式會傳回錯誤訊息。
  • 稍後陳述式也會傳回一或多個錯誤訊息。
在這個案例中,當您執行 SQL Server 代理程式工作,您可能會發現的較新的陳述式不會處理並步驟不正確地傳回成功的狀態。較新的陳述式的結果會被截斷。
發生的原因
SQL Server 2005 代理程式 」 會使用 SQL 原生用戶端驅動程式 (Sqlncli.dll) 來連接到 SQL Server 2005 的執行個體。SQL Server 2000 代理程式 」 會使用 SQL Server ODBC 驅動程式 (Sqlsrv32.dll) 來連線到 Microsoft SQL Server 2000。傳回從 SQL Server 至 SQL Server 代理程式的差異在於行為會導致兩個驅動程式之間的表格式資料資料流 (TDS) 錯誤語彙基元變更。這會導致兩個版本的 SQL Server 代理程式行為的差異。
解決方案

SQL 2005 Server

這個問題的修正程式首次發表累積更新 9。如需有關如何取得此累積更新套件的 SQL Server 2005 Service Pack 2 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
953752 SQL Server 2005 Service Pack 2 的累積更新套件 9
附註 因為組建是累計的每個新的修正版本包含所有的 hotfix 並隨附於先前的 SQL Server 2005 所有安全性修正程式都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
937137 SQL Server 2005 建置 SQL Server 2005 Service Pack 2 已發行之後所發行
Microsoft SQL Server 2005 的 hotfix 會建立特定的 SQL Server service pack。您必須將 SQL Server 2005 Service Pack 2 hotfix 套用至的 SQL Server 2005 Service Pack 2 安裝。根據預設,所提供 SQL Server service pack 的任何 hotfix 包含在下一個 SQL Server service pack。

SQL 2008 Server

這個問題的修正程式將合併至 SQL Server 2008 RTM versiom。不過,若要啟用 hotfix,您可能仍然必須進行中的 〈 其他資訊 〉 一節所述的登錄變更。
其他可行方案
若要解決這個問題,請新增空的 SELECT 陳述式為步驟中的第一個陳述式。
狀況說明
Microsoft 已確認這是在 「 Microsoft 產品資料 」 適用於 」 一節中所列的問題。
其他相關資訊
警告 如果您不當修改登錄使用登錄編輯程式或使用另一個方法,可能會發生嚴重的問題。這些問題可能會要求您重新安裝作業系統。Microsoft 不保證可以解決這些問題。修改登錄,必須自行承擔風險。
若要啟用此 hotfix,您必須建立下列登錄項目,並將此登錄項目設為 0:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<mssql.x>\SQLServerAgent\TruncateJobResultOnError<b00></b00></mssql.x>

附註 在此登錄項目 <mssql.x></mssql.x>表示 SQL Server 執行個體的識別碼。您必須變更為正確值為您的執行個體。

如果您想要停用此 hotfix,將 TruncateJobResultOnError 登錄項目設定為 1。

重現這個問題的步驟

  1. 建立延伸預存程序。例如,建立名為 xp_hello 的預存程序範例。
  2. 建立 SQL Server 代理程式工作,但然後 SQL Server 代理程式工作的步驟中加入下列陳述式:
    declare @txt intexec xp_hello @txt OUTPUTRAISERROR('One or more operations failed to complete.', 16, 1)
  3. 執行 SQL Server 代理程式工作。
當 xp_hello 延伸預存程序傳回錯誤的嚴重性層級 1 和 TruncateJobResultOnError 登錄項目設為 0 時,作業步驟會標示為失敗。Xp_hello 擴充預存程序和 RAISERROR 陳述式的結果會擷取到工作的歷程記錄中。當您檢閱工作的歷程記錄時,您會發現步驟的重要性層級是 16。

當 xp_hello 延伸預存程序傳回錯誤的嚴重性層級 1 和 TruncateJobResultOnError 登錄項目設為 1 時,作業步驟被標示為成功。延伸預存程序 xp_hello 的結果是在工作的歷程記錄中擷取。RAISERROR 陳述式的結果會被截斷。當您檢閱工作的歷程記錄時,您會發現步驟的重要性層級為 1。

當 xp_hello 延伸預存程序傳回的重要性層級 11 錯誤並 TruncateJobResultOnError 登錄項目設為 0 時,作業步驟會標示為失敗。Xp_hello 的結果擴充預存程序和 RAISERROR 陳述式會擷取到工作的歷程記錄中。當您檢閱工作的歷程記錄時,您會發現步驟的重要性層級是 16。

當 xp_hello 延伸預存程序傳回的重要性層級 11 錯誤並 TruncateJobResultOnError 登錄項目設為 1 時,作業步驟會標示為失敗。延伸預存程序 xp_hello 的結果是在工作的歷程記錄中擷取。RAISERROR 陳述式的結果會被截斷。當您檢閱工作的歷程記錄時,您會發現步驟的重要性層級為 11。

如需有關的錯誤訊息的重要性層級的差異的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
309802修正: TRANSACT-SQL 批次中的 RAISERROR 陳述式的呼叫可能會造成 SQLAgent 工作失敗,並會遺失在 SQL Server 中的輸出
903086 修正: 批次工作停止執行,並為 SQL Server 代理程式作業,但在 SQL Server 2000 執行 SQL 指令碼時,會被截斷作業輸出
如需有關哪些檔案會有所變更,以及有關套用包含此 Microsoft 知識庫 」 文件中所述的 hotfix 累積更新套件的任何必要條件,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
953752 SQL Server 2005 Service Pack 2 的累積更新套件 9
参考
如需詳細的組建在 SQL 伺服器 Service Pack 2 後,清單的相關資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
937137 SQL Server 2005 建置 SQL Server 2005 Service Pack 2 已發行之後所發行
如需詳細的 SQL Server 累加的服務模型的相關資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
935897 累加式的服務模型位於 SQL Server 小組製作報告的問題的 hotfix
如需有關如何取得 SQL Server 2005 Service Pack 2 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
913089 如何取得最新的 service pack,SQL Server 2005
如需有關的新功能,SQL Server 2005 Service Pack 2 也改善了的詳細資訊,請造訪下列 Microsoft 網站: 如需有關 SQL Server 更新的命名結構描述的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
822499 Microsoft SQL Server 軟體更新套件的新命名結構描述
如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
編號 824684 用來描述 Microsoft 軟體更新標準術語的說明

警告:本文為自動翻譯

內容

文章識別碼:955695 - 最後檢閱時間:01/16/2015 02:40:00 - 修訂: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard

  • kbnosurvey kbarchive kbsql2005tool kbfix kbPubTypeKC kbqfe kbexpertiseadvanced kbmt KB955695 KbMtzh
意見反應