SSブログ

SQLserver 互換レベルでスナップショットレプリケーションが失敗

SQLServer 2008 のレプリケーションが以下のメッセージで失敗した。

Message: テーブル 'dbo.A06_Kousya' のスクリプトに失敗しました。 

Source: Microsoft.SqlServer.Smo
Target Site: System.Collections.Generic.IEnumerable`1[System.String] ScriptWithList(Microsoft.SqlServer.Management.Smo.DependencyCollection, Microsoft.SqlServer.Management.Smo.SqlSmoObject[])
Message: テーブル 'dbo.A_Ktbl' のスクリプトに失敗しました。
Stack: 場所 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects)
場所 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(SqlSmoObject[] objects)
場所 Microsoft.SqlServer.Replication.Snapshot.TransSmoScriptingManager.GenerateLogBasedArticleSchScript(Scripter scripter, BaseArticleWrapper articleWrapper, Table smoTable)
場所 Microsoft.SqlServer.Replication.Snapshot.TransSmoScriptingManager.GenerateLogBasedArticleScripts(ArticleScriptingBundle articleScriptingBundle)
場所 Microsoft.SqlServer.Replication.Snapshot.TransSmoScriptingManager.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.SqlServerSnapshotProvider.GenerateSnapshot()
場所 Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()
場所 Microsoft.SqlServer.Replication.AgentCore.Run() (ソース: Microsoft.SqlServer.Smo, エラー番号: 0)
ヘルプの表示: http://help/0
Source: Microsoft.SqlServer.Smo
Target Site: Void CheckCollation(System.String, Microsoft.SqlServer.Management.Smo.ScriptingOptions)
Message: 照合順序 'Japanese_90_BIN2' は、SQL Server 2000 ではサポートされていません。
Stack: 場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.CheckCollation(String collationName, ScriptingOptions so)
場所 Microsoft.SqlServer.Management.Smo.Column.ScriptDdlCreateImpl(StringBuilder sb, ScriptingOptions so)
場所 Microsoft.SqlServer.Management.Smo.Column.ScriptDdl(StringCollection queries, ScriptingOptions so)
場所 Microsoft.SqlServer.Management.Smo.Table.ScriptTableInternal(ScriptingOptions so, StringBuilder sb, ColumnCollection columns, IndexCollection indexes)
場所 Microsoft.SqlServer.Management.Smo.Table.GetTableCreationScript(ScriptingOptions so, StringBuilder sb)
場所 Microsoft.SqlServer.Management.Smo.Table.ScriptCreate(StringCollection queries, ScriptingOptions so)
場所 Microsoft.SqlServer.Management.Smo.SqlSmoObject.ScriptCreateInternal(StringCollection query, ScriptingOptions so)
場所 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList, SqlSmoObject[] objects)
場所 Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[] objects) (ソース: Microsoft.SqlServer.Smo, エラー番号: 0)
ヘルプの表示: http://help/0




レプリケーション元もレプリケーション先も同じ SQL2008 だが,レプリケーション対象のDBの互換レベルが SQL2000(80) だった。 

レプリケーション元のSQLではパブリッシャーとディストリビューターが動作するが,ディストリビューターは,SQL2000(80)のDBをサポートしていないようだ。
レプリケーション対象の DB を alter database で,互換レベル SQL2008(100)に上げると,レプリケーションは成功した。 

互換レベルは照合順序などでアプリケーションに影響するので簡単には上げれない。
レプリケーション時に一時的に互換レベルを上げて,終わったら元に戻すような設定もできるが,万一互換レベルが戻らないとアプリケーションに影響が出る可能性がある。



nice!(3)  コメント(0)  トラックバック(0) 

nice! 3

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。