Salut le forum voila j'ai écrit cette requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
--------------------------------------index des stations --------------------------------------------------------
MERGE INTO  [SERVER\MSSQLSERVERS].[GESTIONPETROLE].[dbo].[INDEXPARSTATION] AS target
USING OPENQUERY (
  [DESKTOP-RSHSD6C\SQLEXPRESS], 
    'SELECT * FROM  [DESKTOP-RSHSD6C\SQLEXPRESS].[GESTIONPETROLE].[dbo].[INDEXPARSTATION]'
) AS source
    ON source.[Idindex]=target.[Idindex] AND target.[Dates]=source.[Dates] AND target.[INDEX]=source.[INDEX]
	WHEN MATCHED THEN 
	UPDATE SET [Idindex]=source.[Idindex],[Dates]=source.[Dates],[IdCuve]=source.[IdCuve],[IDPRODUIT]=source.[IDPRODUIT],[IDPISTOLET]=source.[IDPISTOLET],[IDCLIENT]=source.[IDCLIENT],[INDEX]=source.[INDEX],[HEURS]=source.[HEURS]
WHEN NOT MATCHED BY TARGET THEN
INSERT ([Idindex],[Dates],[IdCuve],[IDPRODUIT],[IDPISTOLET],[IDCLIENT],[INDEX],[HEURS])
VALUES (source.[Idindex],source.[Dates],source.[IdCuve],source.[IDPRODUIT],source.[IDPISTOLET],source.[IDCLIENT],source.[INDEX],source.[HEURS]);
qui semble bien fonctionner. Mais si je fait au moins 2 ou trois jours avant d’exécuter cette requête, je constate toujours des lignes qui ont disparu dans la table cible alors que je ne fait pas de suppression. J'aimerai savoir ce qui m’échappe sur cette requête ou sur sql merge?