Pravděpodobně jste již našli odpověď na svou otázku. Tato odpověď má pomoci ostatním, kteří by mohli narazit na tuto otázku. Zde je možná možnost, kterou lze použít k vyřešení přenosu dat pomocí SSIS. Předpokládal jsem, že stále můžete vytvořit připojovací řetězce ukazující na oba vaše servery A a B z balíčku SSIS. Pokud je tento předpoklad nesprávný, dejte mi prosím vědět, abych mohl tuto odpověď smazat. V tomto příkladu používám SQL Server 2008 R2 jako back-end. Protože nemám dva servery, vytvořil jsem dvě identické tabulky v různých Schemas ServerA a ServerB .
Postup krok za krokem:
-
Ve
Connection managerčásti SSIS vytvořte dvě připojení OLE DB, jmenovitě ServerA a ServerB . Tento příklad ukazuje na stejný server, ale ve vašem scénáři budou muset připojení ukazovat na vaše dva různé servery. Viz snímek obrazovky č. 1 . -
Vytvořte dvě schémata
ServerAaServerB. Vytvořte tabulkudbo.ItemInfov obou schématech. Vytvoření skriptů pro tyto tabulky je uvedeno v části Skripty sekce. Opět platí, že tyto objekty jsou pouze pro tento příklad. -
Obě tabulky jsem naplnil ukázkovými daty. Tabulka
ServerA.ItemInfoobsahuje2,222 rowsa tabulkaServerB.ItemInfoobsahuje10,000 rows. Podle otázky chybí 7 778 řádky by měly být přeneseny zeServerBnaServerA. Viz snímek obrazovky č. 2 . -
Na kartě toku ovládacích prvků balíčku SSIS umístěte úlohu toku dat, jak je znázorněno na snímku obrazovky č.3 .
-
Poklepáním na úlohu toku dat přejděte na kartu toku dat a nakonfigurujte úlohu toku dat, jak je popsáno níže. Server B je
OLE DB Source; Najít záznam na serveru A jeLookup transformation taska Server A jeOLE DB Destination. -
Nakonfigurujte
OLE DB SourceServer B jak je znázorněno na snímcích obrazovky #4 a #5 . -
Nakonfigurujte
Lookup transformation taskNajít záznam na serveru A jak je znázorněno na snímcích obrazovky #6 – #8 . V tomto příkladu je ItemId jedinečný klíč. Jedná se tedy o sloupec používaný k hledání chybějících záznamů mezi dvěma tabulkami. Protože potřebujeme pouze řádky, které na Serveru A neexistují , musíme vybrat možnostRedirect rows to no match output. -
Umístěte
OLE DB Destinationna úkolu toku dat. Když propojíte úlohu transformace vyhledávání s cílem OLE DB, budete vyzvániInput Output Selectiondialog. VyberteLookup No Match Outputz dialogu, jak je znázorněno na snímku obrazovky #9 . NakonfigurujteOLE DB DestinationServer A jak je znázorněno na snímcích obrazovky #10 a #11 . -
Jakmile je úloha toku dat nakonfigurována, měla by vypadat jako na snímku obrazovky č. 12 .
-
Ukázkové provedení balíčku je znázorněno na snímku obrazovky č. 13 . Jak si můžete všimnout, chybí
7,778 rowsbyly přeneseny zeServer BnaServer A. Viz snímek obrazovky č. 14 pro zobrazení počtu záznamů tabulky po provedení balíčku. -
Protože požadavkem bylo pouze vložit chybějící záznamy, byl použit tento přístup. Pokud byste chtěli aktualizovat stávající záznamy a smazat záznamy, které již nejsou platné, použijte příklad, který jsem uvedl v tomto odkaz. SQL Integration Services načíst soubor oddělený tabulátory? Příklad v odkazu ukazuje, jak přenést plochý soubor do SQL, ale aktualizuje stávající záznamy a odstraňuje neplatné záznamy. Tento příklad je také vyladěn tak, aby zvládl velký počet řádků.
Doufám, že to pomůže.
Skripty
.
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
Snímek obrazovky č. 1:

Snímek obrazovky č. 2:

Snímek obrazovky č. 3:

Snímek obrazovky č. 4:

Snímek obrazovky č. 5:

Snímek obrazovky č. 6:

Snímek obrazovky č. 7:

Snímek obrazovky č. 8:

Snímek obrazovky č. 9:

Snímek obrazovky č. 10:

Snímek obrazovky č. 11:

Snímek obrazovky č. 12:

Snímek obrazovky č. 13:

Snímek obrazovky č. 14:
