SQL Server Integration Services (SSIS) 2 |
SELECT
ID SourceProductID,
Title,
Price
FROM Products
SELECT
ID SourceProductID,
'B' SourceID,
Title,
Price
FROM Products
SSIS. , / SQL Server, SQL SQL- UNION JOIN ( Lookup ).
, Ignore failure, , TargetID (. ) NULL Lookup Match Output.
Partial cache No cache, Advanced , . SQL Server Profiler .
SELECT
SourceID,
SourceProductID,
ID TargetID
FROM Products
UPDATE Products
SET
Title=?,
Price=?
WHERE ID=?
USE DemoSSIS_SourceB
GO
--
SET IDENTITY_INSERT Products ON
INSERT Products(ID,Title,Price)VALUES
(6,N'',NULL),
(7,N'',NULL),
(8,N' ',NULL)
SET IDENTITY_INSERT Products OFF
GO
USE DemoSSIS_Target
GO
ALTER TABLE Products ADD UpdatedOn datetime
GO
DECLARE @TargetID int=?
DECLARE @Title nvarchar(50)=?
DECLARE @Price money=?
IF(EXISTS(
SELECT Title,Price
FROM Products
WHERE ID=@TargetID
EXCEPT
SELECT @Title,@Price
)
)
BEGIN
UPDATE Products
SET
Title=@Title,
Price=@Price,
UpdatedOn=GETDATE()
WHERE ID=@TargetID
END
, EXEC ProcName ?,?,?. , , , , , .. SSIS-. , , , SSIS-.
USE DemoSSIS_SourceA
GO
UPDATE Products
SET
Price=30
WHERE ID=2 --
USE DemoSSIS_Target
GO
SELECT *
FROM Products
ORDER BY UpdatedOn DESC
USE DemoSSIS_Target
GO
CREATE TABLE LastAddedProducts(
SourceID char(1) NOT NULL, --
SourceProductID int NOT NULL, -- ID
Title nvarchar(50) NOT NULL,
Price money,
CONSTRAINT PK_LastAddedProducts PRIMARY KEY(SourceID,SourceProductID),
CONSTRAINT CK_LastAddedProducts_SourceID CHECK(SourceID IN('A','B'))
)
GO
USE DemoSSIS_Target
GO
DELETE Products
WHERE SourceID='B'
AND SourceProductID>=6
, , , , Deleted bit ( ) DeletedOn datetime (/ ).
, Target ( Staging) Source . Target Staging , SQL- (, SQL- MERGE JOIN), .