使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

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

徵狀

請試想下列案例:

  • 您有在 Microsoft SQL Server 2008 R2 中有網域屬性的主資料服務(MDS)模型與實體。 以網域為基礎的屬性的設計是對同一個屬性進行自我參考。例如,您的員工實體具有 ManagerName 屬性。 ManagerName屬性指的是相同的員工實體本身。注意: 主管也是一種員工。

  • 在屬性上定義的衍生階層階層,要顯示以網域為基礎的屬性的遞迴父/子系關係。

  • 您載入的資料值包含一或多個對 MDS 暫存資料表的迴圈參照。 這種行為會導致迴圈參照,而屬性中的第一個節點則不是圓形的一部分。例如,下列資料模式會顯示迴圈參照。 不過,Member1 成員值不是圓圈的一部分:

    Member1--manager 屬性--> Member2--manager 屬性--> Member3--manager 屬性--> Member2--manager 屬性--> Member3

    insert into mdm.tblStgMemberAttribute(ModelName, EntityName, MemberType_ID, MemberCode, AttributeName, AttributeValue, Status_ID)Values ('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member3', 0),('EntityTest', 'ModelTest', 1, 'Member3', 'Manager', 'Member2', 0),('EntityTest', 'ModelTest', 1, 'Member2', 'Manager', 'Member1', 0)('EntityTest', 'ModelTest', 1, 'Member1', 'Manager', 'NULL', 0)
  • 您可以使用下列其中一種方法,透過使用 MDS 轉移程式來將資料值載入至實體中:

    • 執行 Exec [mdm]。 [udpStagingSweep] 程式,方法是使用所需的參數來處理分段資料。

    • 按一下 [ 整合管理 ] 來造訪 MDS 網站首頁。 在 [匯 入匯出 ] 頁面上的 [ Unbatched 暫存記錄 ] 區段標題底下,按一下 齒輪圖示 以處理特定模型與版本的記錄。

在這種情況下,當背景程式在內部呼叫 [mdm] 時,在暫存程式期間的背景處理常式可能會遇到無限迴圈 。 [udpMemberRecursiveCircularCheck] 程式。

原因

之所以會發生這個問題,是因為 udpStagingSweep 和 udpStagingMemberAttributeSave 程式會針對每個分段列呼叫 udpMemberRecursiveCircularCheck 程式一次。 此行為應該檢查以網域為基礎的屬性值,如果分段列與現有資料同時產生迴圈參照,就會傳回錯誤。 選取所有分段列之後,您會收到下列結果:

  • 隨即會套用沒有錯誤的分段列。

  • 含有錯誤的分段列會以錯誤代碼記下。

如果「症狀」一節中所述的條件為 true,則 [mdm]. [udpMemberRecursiveCircularCheck] 程式會無限期地迴圈,直到伺服器資源耗盡,或發生超時問題。

解決方案

累積更新資訊

SQL Server 2008 R2 Service Pack 1

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

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

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

狀態

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

因應措施

若要解決這個問題,請使用下列其中一個方法:

  • 若要避免此問題,請執行下列步驟:

    1. 在執行轉移程式前,請先手動查看要插入暫存表的成員資料值。

    2. 確定任何以網域為基礎的屬性的所有成員值都不包含「症狀」一節中所述的迴圈參照

  • 當出現「症狀」一節中所述的問題時,請按照下列步驟修正問題:

    1. 找出在無限迴圈中執行的會話。

    2. 終止會話以停止迴圈。

    3. 再次處理迴圈參照之前,請先刪除分段表中的迴圈參照值。

注意事項

  • 若要識別要終止哪個會話,請使用下列其中一種方法:

    • 在 Microsoft SQL Server Management Studio 中使用 [活動監視器]。

    • 從 sys. sysprocesses 或 sys.dm_exec_requests 動態管理檢視(DMV)中進行選取,以找出可在 CPU 和時間快速增加的 MDS 資料庫內運作的會話。 確認在會話中執行的目前查詢與「原因」一節中所述的程式名稱相符。

  • 若要識別會話的目前執行程式,請使用下列其中一種方法:

    • 以滑鼠右鍵按一下 [活動監視器進程] 清單中每個處理常式的 [ 詳細資料 ] 功能表。

    • 使用下列其中一個參數:

      • DBCC INPUTBUFFER (spid)命令與會話 ID 搭配使用。

      • 當您使用 DMV 輸出時, 從 sys.dm_exec_sql_text (sqlhandle)函數將 SELECT *與相符的 sql 控制碼參數搭配使用。

參考

如需如何在 SQL Server Management Studio 中開啟活動監視器的詳細資訊,請造訪下列 MSDN 網站:

如何在 SQL Server Management Studio 中開啟活動監視器如需有關 KILL 語法的詳細資訊,請造訪下列 MSDN 網站:

關於 KILL 語法的一般資訊如需 Sys.dm_exec_requests DMV 的詳細資訊,請造訪下列 MSDN 網站:

Sys.dm_exec_requests DMV 的一般資訊如需 Sys.dm_exec_sql_text DMV 的詳細資訊,請造訪下列 MSDN 網站:

Sys.dm_exec_sql_text DMV 的一般資訊如需 DBCC INPUTBUFFER 命令的詳細資訊,請造訪下列 MSDN 網站:

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

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

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

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

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×