これは少し奇妙なことですが、誰か助けがあれば大歓迎です。
シナリオでは、リモートサイトに本番データベースがあり、ローカルオフィスに開発者データベースがあります。開発者は開発者データベースに直接変更を加え、展開プロセスの一部としてC#アプリケーションが実行され、リモート側で実行できる一連の.sqlスクリプトを生成します(基本的に*を削除、挿入)が、少し何かを探しています削除*によるダウンタイムは許容できないため、より複雑になります。これは、主要なWebサイトのメニュー項目や機能などを制御するすべての参照データです。
基本的に2つのテーブルの差分を返すsprocがあります。私の考えでは、期待されるすべてのデータをtmpテーブルに挿入し、diffを実行し、ソースにない宛先テーブルから何かを削除してから、他のすべてをアップサートすることができます。
問題は、カーソルを使用せずにこれを行う簡単な方法があるかどうかです。sprocは、次のような構造のレコードセットを返します。
TableName Col1 Col2 Col3 Dest Src
TableName = Destのレコードセット内のものはすべて削除する必要があり(srcには存在しないため)、Src内のものはすべてdestにアップサートする必要があります。これを純粋にセットベースで行う方法は考えられませんが、私のDB-fuは弱いです。
どんな助けでもいただければ幸いです。説明が大雑把な場合はお詫びします。詳細が必要な場合はお知らせください。