我正在构建一个 C# 控制台应用程序,它将在我们想要传输大量员工数据的场景中由 SQL Server 代理执行:
在从一个 SQL Server 实例到第二个 SQL Server 实例的两个不同网络上具有相同架构的两个员工表之间。
在同一个 SQL Server 实例上的两个员工表之间(没有网络延迟),一个表是临时表,另一个是仓库。
该过程是连续的,因此 ETL 作业必须首先传输 #1,然后是 #2。
考虑到进程#1 是网络间的并且进程#2 涉及在将新数据传输到目标表之前删除目标表,我想知道为了获得最佳性能而采用的最佳策略是什么。
这是我想做的事情:
过程#2:
BEGIN TRANSACTION EmployeesInsert
WITH MARK N'Transfering employees from Staging to Warehouse';
GO
USE CorporateWarehouse;
GO
DELETE FROM CorporateWarehouse.WarehouseEmployee
INSERT INTO CorporateWarehouse.WarehouseEmployee
(FirstName,
LastName,
Address,
PhoneNumber)
SELECT FirstName,
LastName,
Address,
PhoneNumber
FROM CorporateWarehouse.StagingEmployee
GO
COMMIT TRANSACTION EmployeesInsert;
GO