Tôi nghĩ câu hỏi hay hơn là:Cách tốt nhất để di chuyển dữ liệu từ SQL Server sang Oracle sẽ xóa khỏi MSSS mọi hàng được phân phối thành công là gì?
Bạn làm những điều này theo vòng lặp để đảm bảo rằng khi bạn thêm vào một cái, bạn sẽ xóa khỏi cái kia.
Nếu một số điều ngẫu nhiên không xác định xảy ra với lỗi trên chèn, bạn sẽ tránh được việc xóa bản ghi nguồn.
Đó là ý chính, phải không?
Có nhiều cách tốt hơn để xử lý kiểu di chuyển dữ liệu này sau đó cam kết sau mỗi lần chèn / xóa vòng lặp giao dịch phân tán.
Đầu tiên, một cam kết ở giữa vòng lặp là không tốt. Trong Oracle, đó là một cách tốt để khiến các phiên khác gặp lỗi ORA-01555. Vì vậy, tôi sẽ tránh điều đó nếu có thể.
Thứ hai, bạn hoàn toàn nên biết những nguyên nhân có thể gây ra lỗi hợp lý trên chèn là gì. Bạn vi phạm độ dài cột, FK, Vương quốc Anh ... có một danh sách hữu hạn những gì có thể phá vỡ khi chèn. Lỗi lớn có lông như Không thể mở rộng vùng bảng NÊN khiến hệ thống tạm dừng. Không cần phải mắc bẫy cho điều đó. Nhưng các vấn đề ứng dụng như tôi đã đề cập rất dễ quản lý.
Nếu tôi đang viết điều này, tôi sẽ chèn hàng loạt tất cả các hàng bằng cách sử dụng LOG của Oracle CÁC LỖI TRONG để tránh ROLLBACK đầy đủ khi chỉ một / vài hàng không thành công.
Bây giờ bạn có một bảng chứa mọi hàng không thành công và lý do hàng không thành công. Bây giờ bạn có thể ở phía SQL Server, xóa tất cả các hàng KHÔNG CÓ TRONG danh sách ID bị lỗi.
Bạn đã hoàn thành điều tương tự nhưng với hoạt động dựa trên Đặt thay vì SLOW-BY-SLOW, rất tiếc, ý tôi là từng hàng một.