Microsoft 將 Microsoft SQL Server 2008 Service Pack 1 (SP1)或 Microsoft SQL Server 2008 R2 修正為一個可下載的檔案。 因為修正程式是累加的,所以每個新發行版本本都包含舊版 SQL Server 2008 SP1 或 SQL Server 2008 R2 更新版本中所包含的所有熱修復程式和安全性更新。
徵狀
請試想下列案例:
-
您在電腦上安裝 Microsoft SQL Server 2008 Integration Services (SSIS 2008)或 Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2)。
-
您可以建立包含兩個 For 迴圈容器 專案的 SSIS 套件。
-
您可以為兩個For 迴圈容器專案建立兩個for 迴圈容器範圍變數。 變數具有相同的名稱。
-
您可以在 [ InitExpression]、[ EvalExpression] 和 [ AssignExpression ] 屬性中,針對兩 個 for 迴圈容器 專案使用變數。
-
兩個 For 迴圈容器 專案包含多個執行中並行 執行的 SQL 工作專案。
-
您啟用 SSIS 套件的 檢查點 設定。
-
您執行 SSIS 封裝。
-
SSIS 包執行時,其中一個 執行 SQL 工作專案會失敗或停止。
-
SSIS 封裝會再次執行。
在這個案例中,沒有失敗或停止的其中一個 執行 SQL 工作專案的變數值不正確。注意: 這個 EXECUTE SQL 工作專案位於沒有失敗或停止的 for 迴圈容器 專案中。例如,請考慮下列特定案例:
-
您可以建立包含兩個 For 迴圈容器 專案的 SSIS 套件。 這些專案稱為 [FLC01] 和 [FLC02]。
-
您可以為 FLC01 建立 BatchNo 變數,並為 FLC02 建立 BatchNo 變數。
-
您將 InitExpression 屬性設定為 @ [User:: BatchNo] = 0。
-
您可以將 EvalExpression 屬性設定為 @ [User:: BatchNo] < 10。
-
您將 AssignExpression 屬性設定為 @ [User:: BatchNo] = @ [User:: BatchNo] + 1。
-
兩個 For 迴圈容器 專案包含多個 執行 SQL 工作專案,這些專案使用並存執行方案。
-
您啟用 SSIS 套件的 檢查點 設定。
-
您執行 SSIS 封裝。
-
FLC01 中的一個 EXECUTE SQL 工作專案失敗或停止。
-
SSIS 封裝會再次執行。
在這種情況下,FLC02 中其中一個EXECUTE SQL工作專案的BatchNo值不正確。注意: 這個問題也會發生在 Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2)中。
原因
之所以會發生此問題,是因為在還原 檢查點 變數的邏輯時發生缺陷。 檢查點變數會還原到錯誤的工作。 因此,會還原不正確的變數值。
解決方案
累積更新資訊
SQL Server 2008 R2
此問題的修正程式是在累積更新11中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2633145 SQL Server 2008 R2 的累積更新套件11 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 R2 Service Pack 1
此問題的修正程式是在 SQL Server 2008 R2 Service Pack 1 的累積更新4中第一次發行。如需如何取得此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2633146 SQL Server 2008 R2 Service Pack 1 的累積更新套件4注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2567616 在發行 SQL Server 2008 R2 Service Pack 1 之後發行的 SQL Server 2008 R2 組建
SQL Server 2008 Service Pack 2
此問題的修正程式是在 SQL Server 2008 Service Pack 2 的累積更新7中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2617148 SQL Server 2008 的累積更新套件 7 Service Pack 2注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 在發行 SQL Server 2008 Service Pack 2 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 2 修補程式套用至 SQL Server 2008 Service Pack 2 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。
SQL Server 2008 SP1 的累積更新套件16
此問題的修正程式在 SQL Server 2008 SP1 的累積更新套件16中第一次發行。如需有關如何取得 SQL Server 2008 SP1 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2582282 SQL Server 2008 的累積更新套件 16 Service Pack 1注意: 因為組建是累加的,所以每個新的更新版本都包含舊版 SQL Server 2008 SP1 更新版本中包含的所有修復程式及所有安全更新。 我們建議您考慮套用包含此熱修復程式的最新更新版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
970365 在發行 SQL Server 2008 Service Pack 1 之後發行的 SQL Server 2008 組建
因應措施
若要解決此問題,請針對每個 For 迴圈容器 專案使用不同的變數名稱。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。