合併式發行集快照集就會失敗,並在 SQL Server 中的 「 指令碼失敗 」 錯誤

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

按一下這裡查看此文章的英文版本:3179862
徵狀
在 SQL Server 2014年或 2012年中,您可以建立合併式發行集所包含的資料表必須有幾何或地理資料型別。若要複製您的空間索引,您設定發行項的複本空間索引選項為True,以便合併會複寫空間索引。不過,當快照集執行時,它就會失敗。如果您啟動複寫監視器和向下切入至 「 發行者 」 與發行集、 找出 「 快照集代理程式 」,並檢視詳細資料的快照集執行時,您會看到下列錯誤訊息︰


來源︰ Microsoft.SqlServer.Smo
目標站台︰ System.Collections.Generic.IEnumerable'1[System.String] ScriptWithList (Microsoft.SqlServer.Management.Smo.DependencyCollection,Microsoft.SqlServer.Management.Smo.SqlSmoObject [],布林值)

訊息︰ 伺服器 'CMSQL' 的指令碼失敗。

Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList (DependencyCollection depList、 SqlSmoObject [] 物件,則為 True 的 discoveryRequired) 在堆疊︰

在 Microsoft.SqlServer.Management.Smo.Scripter.EnumScriptWithList (SqlSmoObject [] 物件)

在 Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.ScriptIndexList ([SqlSmoObject] smoObjectList 中的 [指令碼撰寫人員指令碼撰寫人員)

在 Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateTableArticleDriScriptWithSingleBatchConstraints (指令碼撰寫人員指令碼撰寫人員、 BaseArticleWrapper articleWrapper,表格 smoTable)

在 Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateTableArticleScripts (ArticleScriptingBundle articleScriptingBundle)

在 Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateArticleScripts (ArticleScriptingBundle articleScriptingBundle)

在 Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.GenerateObjectScripts (ArticleScriptingBundle articleScriptingBundle)

在 Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoScripting()

在 Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.DoScripting()

在 Microsoft.SqlServer.Replication.Snapshot.MergeSnapshotProvider.DoScripting()

在 Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.GenerateSnapshot()

在 Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()

在 Microsoft.SqlServer.Replication.AgentCore.Run() (來源︰ Microsoft.SqlServer.Smo,錯誤代碼︰ 0)

取得說明︰ http://help/0

來源︰ Microsoft.SqlServer.Smo

目標站台︰ Void CheckTargetVersion (Microsoft.SqlServer.Management.Smo.SqlServerVersionInternal、 Microsoft.SqlServer.Management.Smo.SqlServerVersionInternal、 System.String)

使用空間索引 [IX_GeographicEntity_Outline] 的訊息︰ 時發生錯誤。在 SQL Server 2008年中不支援 GEOMETRY_AUTO_GRID 和 GEOGRAPHY_AUTO_GRID。

Microsoft.SqlServer.Management.Smo.SqlSmoObject.CheckTargetVersion (SqlServerVersionInternal targetVersion、 SqlServerVersionInternal upperLimit、 字串 exceptionText) 在堆疊︰

在 Microsoft.SqlServer.Management.Smo.Index.SpatialIndexScripter.ScriptIndexDetails (StringBuilder 單位元字元)

在 Microsoft.SqlServer.Management.Smo.Index.IndexScripter.GetCreateScript()

在 Microsoft.SqlServer.Management.Smo.Index.ScriptDdl (StringCollection 查詢、 ScriptingPreferences 預存程序、 布林 notEmbedded,則為 True 的 createStatement)

在 Microsoft.SqlServer.Management.Smo.Index.ScriptCreate (StringCollection 查詢、 ScriptingPreferences 預存程序)

在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.ScriptCreateInternal (StringCollection 查詢、 ScriptingPreferences 預存程序,則為 True 的 skipPropagateScript)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObject (Urn urn、 ScriptingPreferences 預存程序、 ObjectScriptingType & scriptType)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreate (Urn urn、 ScriptingPreferences 預存程序、 ObjectScriptingType & scriptType)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObjects (IEnumerable'1 urn)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript (IEnumerable'1 urn)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker (List'1 urn,ISmoScriptWriter 的寫入器)

在 Microsoft.SqlServer.Management.Smo.ScriptMaker.Script DependencyCollection depList、 SqlSmoObject [] 物件 (ISmoScriptWriter 寫入器)

在 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker (DependencyCollection depList、 SqlSmoObject [] 物件,則為 True 的 discoveryRequired)

在 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList (DependencyCollection depList、 SqlSmoObject [] 物件,則為 True 的 discoveryRequired) (來源︰ Microsoft.SqlServer.Smo,錯誤代碼︰ 0)

取得說明︰ http://help/0

發生的原因
SQL Server 不支援以 GEOMETRY_AUTO_GRID 或 GEOGRAPHY_AUTO_GRID 關鍵字定義的空間索引。

當您建立發行集,在 SQL Server 2012年或 SQL Server 2014年時,出版物的設定 (@publication_compatibility_level) 的回溯相容性層級會允許 90RTM 和 100RTM 的設定。因此,當您建立合併式發行集時,會強制使用 SQL Server 2008年的相容性。但是,由於回溯相容性與 SQL Server 2008年,無法複製空間索引。
其他可行方案
若要繼續使用這種類型的資料在合併式發行集,使用下列解決方法之一︰
  • 使用 GEOMETRY_GRID 或 GEOGRPAHY_GRID 關鍵字,而不 GEOMETRY_AUTO_GRID 或 GEOGRAPHY_AUTO_GRID,以定義空間索引。
  • 當您定義出版物時,已定義的文件以設定空間索引,複本空間索引選項設為 False。然後,在建立完訂閱,並初始化的訂閱之後,手動建立空間索引在訂閱者 」 資料表上。

警告:本文為自動翻譯

內容

文章識別碼:3179862 - 最後檢閱時間:08/11/2016 19:06:00 - 修訂: 1.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Enterprise Core, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Enterprise Core, Microsoft SQL Server 2014 Standard

  • kbmt KB3179862 KbMtzh
意見反應