Có lẽ, bạn đã tìm thấy câu trả lời cho câu hỏi của mình. Câu trả lời này là để giúp những người khác có thể vấp phải câu hỏi này. Đây là một tùy chọn khả thi có thể được sử dụng để giải quyết việc truyền dữ liệu bằng SSIS. Tôi giả định rằng bạn vẫn có thể tạo chuỗi kết nối trỏ đến cả máy chủ A và B của mình từ gói SSIS. Nếu giả định đó là sai, vui lòng cho tôi biết để tôi có thể xóa câu trả lời này. Trong ví dụ này, tôi đang sử dụng SQL Server 2008 R2
như back-end. Vì tôi không có hai máy chủ, tôi đã tạo hai bảng giống nhau trong các Schemas
khác nhau Máy chủA và ServerB .
Quy trình từng bước:
-
Trong
Connection manager
của SSIS, tạo hai Kết nối OLE DB cụ thể là ServerA và ServerB . Ví dụ này trỏ đến cùng một máy chủ nhưng trong trường hợp của bạn, các kết nối sẽ cần trỏ đến hai máy chủ khác nhau của bạn. Tham khảo ảnh chụp màn hình # 1 . -
Tạo hai lược đồ
ServerA
vàServerB
. Tạo bảngdbo.ItemInfo
trong cả hai lược đồ. Tạo tập lệnh cho các bảng này được cung cấp trong Tập lệnh tiết diện. Một lần nữa, những đối tượng này chỉ dành cho ví dụ này. -
Tôi đã điền vào cả hai bảng với một số dữ liệu mẫu. Bảng
ServerA.ItemInfo
chứa2,222 rows
và bảngServerB.ItemInfo
chứa10,000 rows
. Theo câu hỏi, thiếu 7.778 các hàng phải được chuyển từServerB
tớiServerA
. Tham khảo ảnh chụp màn hình # 2 . -
Trên tab luồng điều khiển của gói SSIS, đặt tác vụ luồng dữ liệu như được hiển thị trong ảnh chụp màn hình # 3 .
-
Nhấp đúp vào tác vụ luồng dữ liệu để điều hướng đến tab luồng dữ liệu và định cấu hình tác vụ luồng dữ liệu như được mô tả bên dưới. Máy chủ B là một
OLE DB Source
; Tìm bản ghi trong Máy chủ A là mộtLookup transformation task
và Máy chủ A là mộtOLE DB Destination
. -
Định cấu hình
OLE DB Source
Máy chủ B như được hiển thị trong ảnh chụp màn hình # 4 và # 5 . -
Định cấu hình
Lookup transformation task
Tìm bản ghi trong Máy chủ A như được hiển thị trong ảnh chụp màn hình # 6 - # 8 . Trong ví dụ này, ItemId là khóa duy nhất. Do đó, đó là cột được sử dụng để tìm kiếm các bản ghi bị thiếu giữa hai bảng. Vì chúng tôi chỉ cần các hàng không tồn tại trong Máy chủ A , chúng tôi cần chọn tùy chọnRedirect rows to no match output
. -
Đặt một
OLE DB Destination
về tác vụ luồng dữ liệu. Khi bạn kết nối tác vụ chuyển đổi Tra cứu với Đích đến của OLE DB, bạn sẽ được nhắc vớiInput Output Selection
hộp thoại. ChọnLookup No Match Output
từ hộp thoại như được hiển thị trong ảnh chụp màn hình # 9 . Định cấu hìnhOLE DB Destination
Máy chủ A như được hiển thị trong ảnh chụp màn hình # 10 và # 11 . -
Sau khi tác vụ luồng dữ liệu được định cấu hình, nó sẽ giống như được hiển thị trong ảnh chụp màn hình # 12 .
-
Thực hiện mẫu của gói được hiển thị trong ảnh chụp màn hình # 13 . Như bạn có thể nhận thấy, thiếu
7,778 rows
đã được chuyển từServer B
tớiServer A
. Tham khảo ảnh chụp màn hình # 14 để xem số lượng bản ghi bảng sau khi thực hiện gói. -
Vì yêu cầu là chỉ chèn các bản ghi còn thiếu, nên phương pháp này đã được sử dụng. Nếu bạn muốn cập nhật các bản ghi hiện có và xóa các bản ghi không còn hợp lệ, vui lòng tham khảo ví dụ mà tôi đã cung cấp trong liên kết. Dịch vụ tích hợp SQL để tải tệp được phân tách bằng tab? Ví dụ trong liên kết cho thấy cách chuyển một tệp phẳng sang SQL nhưng nó cập nhật các bản ghi hiện có và xóa các bản ghi không hợp lệ. Ngoài ra, ví dụ này cũng được tinh chỉnh để xử lý số lượng lớn các hàng.
Hy vọng điều đó sẽ hữu ích.
Tập lệnh
.
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
Ảnh chụp màn hình # 1:
Ảnh chụp màn hình # 2:
Ảnh chụp màn hình # 3:
Ảnh chụp màn hình # 4:
Ảnh chụp màn hình # 5:
Ảnh chụp màn hình # 6:
Ảnh chụp màn hình # 7:
Ảnh chụp màn hình # 8:
Ảnh chụp màn hình # 9:
Ảnh chụp màn hình # 10:
Ảnh chụp màn hình # 11:
Ảnh chụp màn hình # 12:
Ảnh chụp màn hình # 13:
Ảnh chụp màn hình # 14: