Mungkin, Anda telah menemukan jawaban untuk pertanyaan Anda sekarang. Jawaban ini adalah untuk membantu orang lain yang mungkin tersandung pada pertanyaan ini. Berikut adalah opsi yang mungkin dapat digunakan untuk menyelesaikan transfer data menggunakan SSIS. Saya berasumsi bahwa Anda masih dapat membuat string koneksi yang menunjuk ke server A dan B Anda dari paket SSIS. Jika asumsi itu salah, beri tahu saya agar saya dapat menghapus jawaban ini. Dalam contoh ini, saya menggunakan SQL Server 2008 R2
sebagai backend. Karena saya tidak memiliki dua server, saya telah membuat dua tabel identik dalam Schemas
yang berbeda ServerA dan ServerB .
Proses langkah demi langkah:
-
Di
Connection manager
bagian dari SSIS, buat dua Koneksi OLE DB yaitu ServerA dan ServerB . Contoh ini menunjuk ke server yang sama tetapi dalam skenario Anda, koneksi harus mengarah ke dua server Anda yang berbeda. Lihat tangkapan layar #1 . -
Buat dua skema
ServerA
danServerB
. Buat tabeldbo.ItemInfo
dalam kedua skema. Buat skrip untuk tabel ini diberikan di bawah Skrip bagian. Sekali lagi, objek ini hanya untuk contoh ini. -
Saya telah mengisi kedua tabel dengan beberapa data sampel. Tabel
ServerA.ItemInfo
berisi2,222 rows
dan tabelServerB.ItemInfo
berisi10,000 rows
. Sesuai pertanyaan, 7.778 . yang hilang baris harus ditransfer dariServerB
keServerA
. Lihat tangkapan layar #2 . -
Pada tab aliran kontrol paket SSIS, tempatkan tugas aliran data seperti yang ditunjukkan pada tangkapan layar #3 .
-
Klik dua kali pada tugas aliran data untuk menavigasi ke tab aliran data dan mengonfigurasi tugas aliran data seperti yang dijelaskan di bawah ini. Server B adalah
OLE DB Source
; Temukan catatan di Server A adalahLookup transformation task
dan Server A adalahOLE DB Destination
. -
Konfigurasikan
OLE DB Source
Server B seperti yang ditunjukkan pada tangkapan layar #4 dan #5 . -
Konfigurasikan
Lookup transformation task
Temukan catatan di Server A seperti yang ditunjukkan pada tangkapan layar #6 - #8 . Dalam contoh ini, ItemId adalah kunci unik. Oleh karena itu, itu adalah kolom yang digunakan untuk mencari catatan yang hilang di antara dua tabel. Karena kita hanya membutuhkan baris yang tidak ada di Server A , kita perlu memilih opsiRedirect rows to no match output
. -
Tempatkan
OLE DB Destination
pada tugas aliran data. Saat Anda menghubungkan tugas transformasi pencarian dengan OLE DB Destination, Anda akan diminta denganInput Output Selection
dialog. PilihLookup No Match Output
dari dialog seperti yang ditunjukkan pada tangkapan layar #9 . KonfigurasikanOLE DB Destination
Server A seperti yang ditunjukkan pada tangkapan layar #10 dan #11 . -
Setelah tugas aliran data dikonfigurasi, itu akan terlihat seperti yang ditunjukkan pada tangkapan layar #12 .
-
Contoh eksekusi paket ditunjukkan pada tangkapan layar #13 . Seperti yang Anda lihat,
7,778 rows
yang hilang telah ditransfer dariServer B
keServer A
. Lihat tangkapan layar #14 untuk melihat jumlah record tabel setelah eksekusi paket. -
Karena persyaratannya adalah hanya memasukkan catatan yang hilang, pendekatan ini telah digunakan. Jika Anda ingin memperbarui catatan yang ada dan menghapus catatan yang tidak valid lagi, silakan lihat contoh yang saya berikan di tautan. Layanan Integrasi SQL untuk memuat file yang dibatasi tab? Contoh di tautan menunjukkan cara mentransfer file datar ke SQL tetapi memperbarui catatan yang ada dan menghapus catatan yang tidak valid. Selain itu, contoh ini disesuaikan dengan baik untuk menangani sejumlah besar baris.
Semoga membantu.
Skrip
.
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
Tangkapan Layar #1:
Tangkapan Layar #2:
Tangkapan Layar #3:
Tangkapan layar #4:
Tangkapan layar #5:
Tangkapan layar #6:
Tangkapan layar #7:
Tangkapan layar #8:
Tangkapan layar #9:
Tangkapan layar #10:
Tangkapan layar #11:
Tangkapan layar #12:
Tangkapan layar #13:
Tangkapan layar #14: