KB2536225-修正: CLR 儲存程式在 SQL Server 2008 R2 或 SQL Server 2008 中重新編譯之後,會傳回 Null。

Microsoft 發佈 Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2008 修正成一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 R2 或 SQL Server 2008 修正版本中所包含的所有熱修復程式及所有安全修正程式。

徵狀

請試想下列案例:

  • 您為 Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2008 資料庫建立通用語言執行時間(CLR)存儲程式。

  • CLR 儲存程式是以公用靜態方法來實現,這個方法會在 Microsoft .NET Framework 中傳回整數值。

  • 您執行的應用程式會呼叫 CLR 儲存過程。 CLR 儲存過程會傳回正確的值。

  • 您執行一些重新編譯 CLR 儲存程式的執行方案的操作。注意: 如需如何重新編譯儲存程式的執行方案的詳細資訊,請參閱「其他資訊」一節。

  • 再次執行該應用程式。

在這種情況下,CLR 儲存程式不正確傳回 Null 值。 此外,您必須重新開機 SQL Server 服務才能從此問題復原。

解決方案

累積更新資訊

SQL Server 2008 Service Pack 3

此問題的修正程式是在 SQL Server 2008 的累積更新2(Service Pack 3)中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2633143 SQL Server 2008 的累積更新套件 2 Service Pack 3注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2629969 在發行 SQL Server 2008 Service Pack 3 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 3 修復程式套用至 SQL Server 2008 Service Pack 3 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。

SQL Server 2008 R2 Service Pack 1

此問題的修正程式是在 SQL Server 2008 R2 Service Pack 1 的累積更新2中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2567714 SQL Server 2008 R2 Service Pack 1 的累積更新套件2注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建

SQL Server 2008 R2

此問題的修正程式是在累積更新8中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

2534352 SQL Server 2008 R2 的累積更新套件8 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建

其他相關資訊

若要重新編譯儲存程式的執行方案,請執行下列任何一項操作:

  • 執行 DBCCFREEPROCCACHE 語句。

  • 針對資料表或視圖執行下列其中一項語句:

    • ALTER TABLE

    • 變更視圖

  • 執行會變更或刪除索引的執行方案。

  • 針對執行方案所使用的統計資料執行 更新 作業。 注意: 您可以執行一條語句來執行 更新 作業,或者可以自動執行 更新 作業。

  • 執行 sp_recompile 語句。

  • 對按鍵進行許多變更。 例如,您可以使用使用者帳戶來更新語句所參照的資料表,以執行 插入 或 刪除 語句。

  • 在包含觸發程式的資料表中插入或刪除許多資料列。

  • 使用 [搭配 重新編譯 ] 選項來執行預存程序。

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

參考

如需有關 CLR 儲存程式的詳細資訊,請造訪下列 MSDN 網站:

CLR 儲存程式的一般資訊如需有關 SQL Server 的增量服務模型的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

935897 您可以從 SQL Server 團隊取得增量服務模型,以提供已報告問題的修補程式如需 SQL Server 更新命名架構的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

822499Microsoft SQL Server 軟體更新套件的新命名架構如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:

824684 描述 Microsoft 軟體更新所使用的標準術語說明

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

×