que version de sql server usas? en sql server 2012 hay una funcion para hacer lo que necesitas(ahorita no recuerdo cual es), para hacer que inserte lo que no existe y actualice lo queya esta puedes hacer
Código SQL:
Ver originalINSERT INTO tabla
SELECT VALUES FROM tabla1 AS t1
LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
WHERE t2.id IS NULL
UPDATE tabla
SET VALUE=t3.VALUE
FROM
(
SELECT VALUES FROM tabla1 AS t1
LEFT JOIN tabla2 AS t2 ON (t1.id=t2.id)
WHERE t2.id IS NOT NULL
) AS t3 WHERE t3.id=tabla.id
saludos,
Libras