私はSQL MERGEを実行するためにpowershell関数を使用しています。私の挿入が機能していますが、私の削除は私のターゲットテーブルのすべての行を削除しています。私のSQL文がPowerShellので置換された変数を次のようになります。SQL Mergeターゲットテーブルのすべての行を削除します
MERGE INTO $($Target) AS Target
USING $($Target)_TEMP AS Source
ON Target.[$($PrimaryKey)] = Source.[$($PrimaryKey)]
WHEN NOT MATCHED THEN
INSERT ($InsertColumns) VALUES ($InsertValues)
WHEN NOT MATCHED BY Source THEN
DELETE;
あなたがここに完全なPowerShellの機能を見ることができます: http://pastebin.com/uWY6VfmU
例表データ:
domsamgrp (primary key) samaccountname GroupName Domain whenchanged
MYDOMAIN\user1\Tableau_Client user1 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user2\Tableau_Client user2 Tableau_Client MYDOMAIN 55:46.0
MYDOMAIN\user3\Tableau_CMO user3 Tableau_CMO MYDOMAIN 55:48.0
MYDOMAIN\user1\Tableau_EDM user1 Tableau_EDM MYDOMAIN 55:50.0
MYDOMAIN\user5\Tableau_EDM user5 Tableau_EDM MYDOMAIN 55:49.0
[MERGE documentation](https://msdn.microsoft.com/en-us/library/bb510625.aspx)を見ると、 'USING'はテーブル名の後ろに列名が必要です。私はそれに精通していないが、セクション 'D'をチェックしてください –
あなたはあなたのdeleteステートメントのソーステーブルから削除したいですか?ソーステーブルに一致するものがない場合は、現在、削除ステートメントがターゲットテーブルから削除されているためです。 – ZLK
@ZLK - ターゲットテーブルの特定の行を削除します。 –