問題タブ [merge-replication]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - Identity_insert をオンに設定 - マージ レプリケーション
2 つのデータベース間でマージ レプリケーションを設定しており、両方で ID 範囲を使用しています。
パブリッシャーでマージされたテーブルに特定の行を追加したい (ID 値を ID 範囲外に設定する)。これを試すと、次のエラーが表示されます。
挿入に失敗しました。データベース 'xxx'、レプリケートされたテーブル 'dbo.yyy'、列 'yyy_id' の ID 範囲チェック制約と競合しました。ID 列がレプリケーションによって自動的に管理される場合は、範囲を次のように更新します。パブリッシャーの場合、sp_adjustpublisheridentityrange を実行します。サブスクライバーの場合は、ディストリビューション エージェントまたはマージ エージェントを実行します。
ID 範囲管理を使用しているマージ レプリケート テーブルに特定の ID 値を強制する方法はありますか?
sql-server-2008 - 複製記事が正しいことを確認する簡単な方法はありますか?
パブリケーション (二次的にはサブスクリプション) で、現在配置されている記事が期待されているものおよび/または正しいものと一致することを確認するために実行できるスクリプトまたはコマンドはありますか?
レプリケーション データベースに手動で変更が加えられた (つまり、テーブルの "MSMerge_ins_..." トリガーが変更または削除され、そのテーブルのレプリケーションが正しく機能しない) 場合、それを簡単に検出する方法が必要です。
パブリケーション全体を削除して再度追加する必要はありません。他に選択肢がないなら、それでいい。
ありがとう!
distributed - 同期の悪夢-IISなしで2つのSQLCEインスタンス間でマージレプリケーション(またはRDA)を使用することは可能ですか?
以下の同期を維持することを含む次の問題に直面しています。
- 1集中型サーバー(IIS / MSSQL 2005)
- ClickOnceによって配布される多くのデスクトップWPFクライアント
- 多くのモバイルクライアント-(Windows CE)
代替テキストhttp://img502.imageshack.us/img502/8246/deployment.png
これらの厄介な制約がある場合:
- すべての同期関係は双方向です
- デスクトップとモバイルノードにはオフラインモードが必要です
- モバイルノードは中央サーバーと同期できませんが、USB経由でデスクトップノードと同期します。デスクトップノードは、中央サーバーではなく、モバイルクライアントのサーバーとして機能します。次に、モバイルノードからの更新は、デスクトップと同期し、そのデスクトップを中央サーバーと同期することにより、中央サーバーに伝播する必要があります。 おい。
不快な。
デスクトップとサーバーを同期するには、Merge Replicationを使用できることがわかっています。サーバーはプロバイダーであり、デスクトップはサブスクライバーです。しかし、モバイルノードとデスクトップノードの同期についてはどうでしょうか。どうやらデスクトップはSQLサーバー+ISSなしではパブリッシャーにはなれませんよね?MSSQLCEはデスクトップにのみ展開できます。
この場合でも、ノードはサブスクライバーとパブリッシャーの両方になることができますか?この配置はMergeReplicationアーキテクチャではサポートされていないようです。サポートされているモデルはハブアンドスポークだけのようです。
考えられる解決策としてRDAまたはマージレプリケーションを排除できるかどうかを判断しようとしています。そうであれば、おそらくMSSyncFrameworkを追求するでしょう。
おそらく、私たちが検討できる他のテクノロジーはありますか?
皆さんありがとう、
アシュリー
更新:MS Sync Frameworkを使い始めたばかりで、すばらしいです。
sql-server-2005 - レプリケーション カスタム リゾルバは空の文字列を NULL に変更します
別のデータベースに (マージ レプリケーションを使用して) レプリケートされ、ストアド プロシージャである 1 つのカスタム リゾルバーを持つデータベースにポストする C# アプリケーションがあります。
これは SQL Server 2000 では正常に機能していましたが、SQL Server 2005 でテストすると、カスタム リゾルバーは空の varchar 列を null に変更しようとします (この特定の列は null を許可しないので失敗します)。
これらの varchar フィールドは、両方のデータベースで現在空であり、変更されておらず、ストアド プロシージャがそれらを変更していないため、競合を引き起こすものではないことに注意してください (別の money 列の値を設定しようとしているだけです)。 .
誰かがこの問題に遭遇したことがありますか、または空の文字列をそのまま残すストアドプロシージャの例がありますか?
実際のストアド プロシージャはかなり単純で、競合が発生した場合に顧客の残高を再計算します。
sql-server - マージ レプリケーションで SQL Server 2000 テーブルの既定値のない NOT NULL 列の名前を変更する
sp_repladdcolumn
I を使用すると、次のいずれかを実行できます
。1) null を許可する列を追加します。または
2) null を許可しないデフォルト値を持つ列を追加します。
サブスクリプション全体を削除して再作成せずに、
3) null を許可しないデフォルト値のない列を追加します。
これは可能ですか?
NOT NULL に設定する前に、列にデータを入力する必要があることに気付きました。タイトルが示すように、私が本当にやりたいことは、a) データが含まれている、b) NOT NULL に設定されている、c) デフォルト値がない既存の列の名前を変更することです。
sql-server - SQL Server マージ レプリケーションの問題
CRM システムで Merge レプリケーションをセットアップしています。営業担当者のデータは、ネットワークに接続したときにマージされ (SQL がノートブックが接続されていることを検出したときだと思います)、ラップトップを取り出し、戻ってきたときに再びマージします (1 つのサーバーを介して合計で約 6 台のラップトップがマージされます)。
このシステムは、最初のセットアップ時には問題ないように見えますが、約 1 か月が経過するとほとんど停止し、ユーザーごとにマージ ジョブの実行に 2 時間近くかかります。サーバーはまったく苦労していません。
パブリケーション全体を削除してすべてのサブスクリプションを再作成すると、約 1 か月が経過するまで問題なく動作しているように見えますが、同じ問題に戻ります。
データベースは、主キー/インデックスなどが不足しているため、設計が不十分ですが、最大のテーブルには約 3000 行しかありません。
なぜこれが起こっているのか、そしてパブリケーションを削除して再作成するときにデータを失うリスクがあるかどうかを知っている人はいますか?
sql-server - 列制約の変更 null/not null = rowguid レプリケーション エラー
マージ レプリケーションを使用して、Sql サーバー 2005 でデータベースを実行しています。常に値を持つ必要があるため、一部の FK 列を「非 null」に変更したいと考えています。ただし、SQLサーバーではそれができません。これは次のように述べています。
- テーブルを変更できません。マージ レプリケーションで使用される rowguid 列の既定の制約を削除することは無効です。内部レプリケーション手順の実行中にスキーマの変更に失敗しました。修正処置については、このエラー メッセージに付随する他のエラー メッセージを参照してください。トランザクションはトリガーで終了しました。バッチは中止されました。
FKとして機能している別の列に対してのみ、rowguid列の制約をまったく変更しようとはしていません。null 以外に設定したいその他の列は、その情報 (つまり、顧客、顧客名) がなければレコードが意味をなさないためです。
質問: レプリケーションをオフにしてから再度オンにせずに、列を「非ヌル」に更新する方法はありますか? これはこれを行うための最良の方法でもありますか?代わりに制約を使用する必要がありますか?
sql-server - パブリッシャーでのみ実行される SQL トリガー
Web インターフェイスとデスクトップ インターフェイスの両方を備えた社内アプリがあります (マージ レプリケーションを使用する OCAです)。まだ SQL 2005 を使用しており、多くの「アーカイブ」テーブルが設定されています。これらは、関連するトリガーによって満たされTable
ます。 tblPersonArchive
など。レプリケーション セットをできるだけ小さく保つためtblPerson
に、すべてのアーカイブ テーブルをレプリケーションから除外したいと考えています。
ユーザーがデータに直接アクセスすることはないため、これはビジネスの観点からは問題になりません。文字通り、レプリケーションを使用しているデスクトップ アプリに存在する必要はありません。
私が理解しようとしているのは、それをどのように達成するかということです。私の「推測」はPublication Properties --> Article Properties --> Copy User Triggers = FALSE
、アーカイブ テーブルを設定してから、レプリケーション セットから除外することです。理論的には、トリガーは Web アプリとレプリケーションを介して引き続きアーカイブ テーブルを起動し、維持します。
残念ながら、これは現時点では推測にすぎません。私は、掘り下げる前に少し安心できることを望んでいました.
sql-server-2008 - 長期マージ
異なるシステムのデータベース間で同期を行っているときに、レプリケーション モニターで「長時間のマージ」という警告が表示されます。私のデータベースは何十万ものレコードで構成されているため、実行に時間がかかるため、「長時間のマージ」という警告が表示されます。
転送するレコードに影響しますか、それとも警告を無視する必要がありますか?
取るべきステップは何ですか?
この警告の解決策は何ですか?
sql-server-2008 - 公開と配布を無効にする方法は?
公開と配布を無効にすると、次のエラーが発生します。Plz、公開と配布を無効にする方法を教えてください。
SQL Serverは、「サーバー」での公開と配布を無効にできませんでした。
Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。(Microsoft.SqlServer.ConnectionInfo)
ディストリビューターが正しくインストールされていません。公開のためにデータベースを無効にできませんでした。データベースコンテキストを「master」に変更しました。(Microsoft SQL Server、エラー:20029)