2010-09-13 22 views
5

Tôi có một cấu hình exe được lập cấu hình trong bộ lập lịch cửa sổ để thực hiện các thao tác kịp thời trên một tập hợp dữ liệu.Ưu điểm của gói SSIS qua các cửa sổ được lên lịch exe

Các cuộc gọi exe được lưu trữ procs để truy xuất dữ liệu và thực hiện một số phép tính và cập nhật dữ liệu trở lại cơ sở dữ liệu khác.

Tôi muốn biết, ưu và khuyết điểm của việc sử dụng gói SSIS so với exe được lên lịch là gì.

Trả lời

12

Bạn có ý kiến ​​những ưu điểm và nhược điểm của việc sử dụng Công việc đại lý máy chủ SQL để lên lịch chạy các gói SSIS và thực thi lệnh shell không? Tôi không thực sự biết những ưu điểm về windows scheduler, vì vậy tôi sẽ dính vào danh sách những ưu điểm của SQL Server Agent Jobs.

  1. Nếu bạn đang sử dụng tác vụ SQL Server Agent trên máy chủ, hãy chạy các gói SSIS từ đại lý hợp nhất các địa điểm bạn cần theo dõi ở một vị trí.

  2. Công việc đại lý máy chủ SQL đã được xây dựng trong tính năng ghi nhật ký và thông báo. Tôi không biết Windows Scheduler hoạt động như thế nào trong lĩnh vực này.

  3. Công việc đại lý máy chủ SQL có thể chạy nhiều hơn các gói SSIS. Vì vậy, bạn có thể muốn chạy một lệnh T-SQL như bước 1, thử lại nếu nó không thành công, cuối cùng chuyển sang bước 2 nếu bước 1 thành công hoặc ngừng công việc và gửi lỗi nếu điều kiện bước 1 không bao giờ được đáp ứng. Điều này thực sự hữu ích cho các quá trình ETL nơi bạn đang cố gắng giám sát một máy chủ khác cho một số điều kiện trước khi chạy ETL của bạn.

  4. Công việc đại lý máy chủ SQL rất dễ báo cáo vì dữ liệu của chúng được lưu trữ trong cơ sở dữ liệu msdb. Chúng tôi có các đăng ký theo lịch biểu định kỳ cho các báo cáo SSRS cung cấp cho chúng tôi dữ liệu về công việc của chúng tôi. Điều này có nghĩa là tôi có thể nhận được một email mỗi buổi sáng trước khi tôi đi vào văn phòng cho tôi biết nếu mọi thứ đang diễn ra tốt đẹp hoặc nếu có bất kỳ vấn đề nào cần được giải quyết càng sớm càng tốt.

  5. Công việc đại lý máy chủ SQL được sử dụng bởi đăng ký SSRS cho mục đích lên lịch. Tôi thường cần phải bắt đầu báo cáo SSRS bằng cách gọi lịch trình công việc của họ, vì vậy tôi đã phải làm việc với SQL Server Agent Jobs.

  6. Công việc đại lý máy chủ SQL có thể được ghép với nhau. Một kịch bản phổ biến cho ETL của tôi là có một số công việc chạy theo lịch trình vào buổi sáng. Khi tất cả các công việc thành công, một công việc khác được gọi là kích hoạt một số công việc đại lý máy chủ SQL. Một số công việc chạy song song và một số chạy serially.

  7. Công việc đại lý máy chủ SQL dễ dàng được viết và tải vào hệ thống kiểm soát nguồn của chúng tôi. Điều này cho phép chúng tôi quay lại các phiên bản trước đó của công việc nếu cần. Chúng tôi đã thực hiện điều này vào một vài dịp, đặc biệt khi có ai đó vô tình xóa một công việc.

Trên một ocassion, chúng tôi đã tìm thấy một tình huống mà Windows Scheduler có thể làm điều gì đó mà chúng tôi không thể thực hiện với Tác vụ đại lý máy chủ SQL. Trong những ngày đầu sau khi di chuyển SAN chúng tôi đã có một số kịch bản cho snapshotting và nhân bản ổ đĩa mà không làm việc trong một SQL Server Agent Job. Vì vậy, chúng tôi đã sử dụng tác vụ Windows Scheduler để chạy mã trong một thời gian. Sau khoảng một tháng, chúng tôi đã tìm ra những gì chúng tôi đã bỏ lỡ và có thể di chuyển bước trở lại Công việc đại lý máy chủ SQL.

Liên quan đến SSIS qua các cuộc gọi thủ tục lưu trữ exe.

  1. Nếu tất cả những gì bạn đang làm đang chạy thủ tục lưu trữ, thì SSIS có thể không thêm nhiều cho bạn. Cả hai cách tiếp cận đều hoạt động, do đó, nó thực sự đi đến sự khác biệt giữa những gì bạn nhận được từ một cách tiếp cận .exe và SSIS cũng như số lượng các thủ tục được lưu trữ đang được gọi.

  2. Tôi thích SSIS vì chúng tôi làm rất nhiều trong nhóm của mình, nơi chúng tôi phải tải xuống dữ liệu từ các máy chủ khác, nhập/xuất tệp hoặc thực hiện một số bài đăng https điên khùng. Nếu chúng ta chỉ phải chạy một bộ quy trình và tất cả chúng đều là các cuộc gọi thủ tục được lưu trữ, thì SSIS có thể đã quá mức cần thiết. Đối với môi trường của tôi, SSIS là công cụ tốt nhất để di chuyển dữ liệu vì chúng tôi di chuyển tất cả các loại dữ liệu đến và đi từ máy chủ. Nếu bạn đã từng mong đợi di chuyển vượt quá các thủ tục đã lưu trữ, thì bạn có thể chấp nhận SSIS ngay bây giờ.

  3. Nếu bạn chỉ đang chạy một vài thủ tục được lưu trữ, thì bạn có thể thoát khỏi việc thực hiện việc này từ Tác vụ Đại lý Máy chủ SQL không có SSIS. Bạn thậm chí có thể song song công việc bằng cách làm một công việc chính bắt đầu một số công việc thông qua msdb.dbo.sp_start_job 'Tên công việc'.

  4. Nếu bạn muốn song song nhiều cuộc gọi thủ tục đã lưu trữ, thì SSIS có thể sẽ đánh bại chuỗi cuộc gọi Lệnh của tác nhân máy chủ SQL. Mặc dù chuỗi có thể có trong mã, không có bề mặt trực quan và khó hiểu các kịch bản chuỗi phức tạp dễ thực hiện trong SSIS với các vùng chứa chuỗi và các ràng buộc ưu tiên.

  5. Từ góc độ bảo trì mã, SSIS đánh bại bất kỳ giải pháp exe nào cho nhóm của tôi vì mọi người trong nhóm của tôi đều có thể hiểu SSIS và một vài người trong chúng ta thực sự có thể mã ngoài SSIS. Nếu bạn đang có kế hoạch để chuyển giao cho một ai đó xuống dòng, sau đó bạn cần phải xác định những gì được duy trì nhiều hơn cho môi trường của bạn. Nếu bạn đang xây dựng trong một môi trường mà thay thế trong tương lai của bạn sẽ là một lập trình viên .NET và không phải là chuyên gia về DBA hoặc Business Intelligence, thì SSIS có thể không phải là cơ sở mã thích hợp để chuyển sang một lập trình viên tương lai.

  6. SSIS cung cấp cho bạn việc ghi nhật ký hộp. Mặc dù bạn chắc chắn có thể thực hiện đăng nhập mã, bạn có thể cần phải bọc mọi thứ trong các khối try-catch và tìm ra một số chiến lược để tập trung ghi nhật ký giữa các tệp thực thi. Với SSIS, bạn có thể tập trung đăng nhập vào một bảng SQL Server, đăng nhập các tệp trong một số thư mục tập trung hoặc sử dụng một nhà cung cấp nhật ký khác. Cá nhân, tôi luôn luôn đăng nhập vào cơ sở dữ liệu và tôi có báo cáo SSRS thiết lập để giúp làm cho tinh thần của dữ liệu. Chúng tôi thường khắc phục sự cố công việc cá nhân dựa trên chi tiết bước lịch sử công việc của Đại lý máy chủ SQL. Việc ghi nhật ký từ SSIS là hiểu rõ hơn về các mẫu thất bại dài hạn hoặc cảnh báo giám sát không dẫn đến thất bại như loại bỏ các cột lưu lượng dữ liệu không được sử dụng (chỉ báo ban đầu cho chúng ta về các thay đổi trong cấu trúc dữ liệu nguồn cơ bản) hoặc số liệu hiệu suất (mặc dù được lưu trữ) các thủ tục cũng có một hình thức đăng nhập riêng trong các hệ thống của chúng tôi).

  7. SSIS cung cấp cho bạn bề mặt thiết kế trực quan. Tôi đã đề cập điều này trước một thời gian ngắn, nhưng nó là một điểm đáng để mở rộng theo cách riêng của nó. BIDS là một bề mặt thiết kế phù hợp để hiểu những gì đang chạy theo thứ tự nào. Bạn sẽ không nhận được điều này bằng cách viết các vòng lặp trong khi mã. Có thể bạn có một dạng visualizer mà tôi chưa bao giờ sử dụng, nhưng kinh nghiệm của tôi với các lời gọi thủ tục lưu trữ mã hóa luôn luôn xảy ra trong một trình soạn thảo văn bản, không phải trong một lớp thiết kế trực quan. SSIS làm cho nó tương đối dễ dàng để hiểu được ưu tiên và thứ tự của các hoạt động trong luồng điều khiển đó là nơi bạn sẽ làm việc nếu bạn đang sử dụng các tác vụ sql thực thi.

  8. Câu chuyện triển khai cho SSIS khá tốt. Chúng tôi sử dụng BIDS Helper (một add-in miễn phí cho BIDS), do đó việc triển khai các thay đổi cho các gói là một cú nhấn chuột phải trên Solution Explorer. Chúng tôi chỉ phải triển khai một gói mỗi lần. Nếu bạn đang viết một chương trình thực thi chính chạy tất cả các ETL, thì bạn có thể phải biên dịch mã và triển khai nó khi không có ETL nào đang chạy.Các gói SSIS là các thùng chứa mã mô-đun, vì vậy nếu bạn có 50 gói trên máy chủ của mình và bạn thực hiện thay đổi trong một gói, thì bạn chỉ phải triển khai gói đã thay đổi. Nếu bạn thiết lập tệp thực thi của mình để chạy mã từ các tệp cấu hình và không phải biên dịch lại toàn bộ ứng dụng, thì đây có thể không phải là một chiến thắng lớn.

  9. Thay đổi thử nghiệm đối với gói cá nhân có lẽ thường dễ dàng hơn kiểm tra thay đổi trong ứng dụng. Có nghĩa là, nếu bạn thay đổi một quy trình ETL trong một phần mã của bạn, bạn có thể phải kiểm tra hồi quy (hoặc kiểm thử đơn vị) toàn bộ ứng dụng của bạn. Nếu bạn thay đổi một gói SSIS, bạn thường có thể kiểm tra nó bằng cách chạy nó trong BIDS và sau đó triển khai nó khi bạn cảm thấy thoải mái với những thay đổi.

  10. Nếu bạn phải triển khai tất cả các thay đổi của mình thông qua quy trình phát hành và có các quy trình thử nghiệm phát hành trước mà bạn phải vượt qua, thì cách tiếp cận có thể thực thi có thể dễ dàng hơn. Tôi chưa bao giờ tìm thấy một cách hiệu quả để tự động đơn vị kiểm tra một gói SSIS. Tôi biết có những khuôn khổ và kiểm tra khai thác để làm điều này, nhưng tôi không có bất kỳ kinh nghiệm với họ vì vậy tôi không thể nói cho hiệu quả hoặc dễ sử dụng. Trong tất cả công việc của tôi với SSIS, tôi đã luôn luôn thay đổi máy chủ sản xuất của mình trong vòng vài phút hoặc vài giây bằng cách viết các thay đổi.

Hãy cho tôi biết nếu bạn cần tôi xây dựng trên bất kỳ điểm nào. Chúc may mắn!

+1

Thông tin của bạn về việc lên lịch thực sự hữu ích. Tôi muốn biết thêm về ưu và khuyết điểm của việc sử dụng gói SSIS trên một exe VB gọi thủ tục lưu trữ cho cùng. – Brainchild

+0

Tôi đã sửa đổi câu trả lời để trực tiếp giải quyết câu hỏi được liệt kê trong nhận xét của bạn. Hãy cho tôi biết nếu có gì không rõ ràng. –

+0

+1 cho cả câu hỏi và câu trả lời này (toàn diện) – bonCodigo

0

Nếu bạn có sự phụ thuộc vào các tính năng của Windows, chẳng hạn như ghi nhật ký, sự kiện, truy cập vào tài nguyên cửa sổ, hãy đi tuyến dịch vụ lập lịch/cửa sổ windows. Nếu nó chỉ là db để chuyển động db hoặc nếu bạn cần một số loại sử dụng hàm db nặng - hãy đi tuyến SSIS.

Các vấn đề liên quan