Du har sandsynligvis fundet et svar på dit spørgsmål nu. Dette svar er for at hjælpe andre, der måtte falde over dette spørgsmål. Her er en mulig mulighed, der kan bruges til at løse dataoverførslen ved hjælp af SSIS. Jeg antog, at du stadig kan oprette forbindelsesstrenge, der peger på både dine servere A og B fra SSIS-pakken. Hvis denne antagelse er forkert, så lad mig det vide, så jeg kan slette dette svar. I dette eksempel bruger jeg SQL Server 2008 R2 som back-end. Da jeg ikke har to servere, har jeg oprettet to identiske tabeller i forskellige Schemas ServerA og ServerB .
Trin-for-trin proces:
-
I
Connection managersektion af SSIS, skal du oprette to OLE DB-forbindelser, nemlig ServerA og ServerB . Dette eksempel peger på den samme server, men i dit scenarie skal forbindelserne pege på dine to forskellige servere. Se skærmbillede #1 . -
Opret to skemaer
ServerAogServerB. Opret tabellendbo.ItemInfoi begge skemaer. Opret scripts til disse tabeller er angivet under Scripts afsnit. Igen er disse objekter kun til dette eksempel. -
Jeg har udfyldt begge tabeller med nogle eksempeldata. Tabel
ServerA.ItemInfoindeholder2,222 rowsog tabelServerB.ItemInfoindeholder10,000 rows. I henhold til spørgsmålet, de manglende 7.778 rækker skal overføres fraServerBtilServerA. Se skærmbillede #2 . -
På SSIS-pakkens kontrolflow-fane skal du placere en dataflowopgave som vist på skærmbillede #3 .
-
Dobbeltklik på dataflowopgaven for at navigere til fanen dataflow og konfigurer dataflowopgaven som beskrevet nedenfor. Server B er en
OLE DB Source; Find post i server A er enLookup transformation taskog Server A er enOLE DB Destination. -
Konfigurer
OLE DB SourceServer B som vist på skærmbilleder #4 og #5 . -
Konfigurer
Lookup transformation taskFind post i server A som vist på skærmbilleder #6 - #8 . I dette eksempel er ItemId den unikke nøgle. Derfor er det den kolonne, der bruges til at søge efter manglende poster mellem de to tabeller. Da vi kun har brug for de rækker, der ikke findes i Server A , skal vi vælge mulighedenRedirect rows to no match output. -
Placer en
OLE DB Destinationpå dataflowopgaven. Når du forbinder opslagstransformationsopgaven med OLE DB-destination, bliver du bedt omInput Output Selectiondialog. VælgLookup No Match Outputfra dialogen som vist på skærmbillede #9 . KonfigurerOLE DB DestinationServer A som vist på skærmbilleder #10 og #11 . -
Når dataflowopgaven er konfigureret, skal den se ud som vist på skærmbillede #12 .
-
Eksempeludførelse af pakken er vist på skærmbillede #13 . Som du kan bemærke, er de manglende
7,778 rowser blevet overført fraServer BtilServer A. Se skærmbillede #14 for at se antallet af tabelposter efter pakkeudførelsen. -
Da kravet var blot at indsætte de manglende poster, er denne fremgangsmåde blevet brugt. Hvis du gerne vil opdatere eksisterende poster og slette poster, der ikke længere er gyldige, skal du henvise til eksemplet, som jeg har givet i denne link. SQL Integration Services for at indlæse tabulatorsepareret fil? Eksemplet i linket viser, hvordan man overfører en flad fil til SQL, men den opdaterer eksisterende poster og sletter ugyldige poster. Eksemplet er også finjusteret til at håndtere et stort antal rækker.
Håber det hjælper.
Scripts
.
CREATE SCHEMA [ServerA] AUTHORIZATION [dbo]
GO
CREATE SCHEMA [ServerB] AUTHORIZATION [dbo]
GO
CREATE TABLE [ServerA].[ItemInfo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemId] [varchar](255) NOT NULL,
[ItemName] [varchar](255) NOT NULL,
[ItemType] [varchar](255) NOT NULL,
CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO
CREATE TABLE [ServerB].[ItemInfo](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ItemId] [varchar](255) NOT NULL,
[ItemName] [varchar](255) NOT NULL,
[ItemType] [varchar](255) NOT NULL,
CONSTRAINT [PK_ItemInfo] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [UK_ItemInfo_ItemId] UNIQUE NONCLUSTERED ([ItemId] ASC)
) ON [PRIMARY]
GO
Skærmbillede #1:

Skærmbillede #2:

Skærmbillede #3:

Skærmbillede #4:

Skærmbillede #5:

Skærmbillede #6:

Skærmbillede #7:

Skærmbillede #8:

Skærmbillede #9:

Skærmbillede #10:

Skærmbillede #11:

Skærmbillede #12:

Skærmbillede #13:

Skærmbillede #14:
