Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bạn có thể giám sát việc thực thi một gói SSIS, trong BIDS, khi nó chạy trên máy chủ không?

Tùy chọn khả thi:

Bạn cần sử dụng Logging tính năng trong SSIS. Nó cho phép bạn định cấu hình các sự kiện mà bạn muốn ghi lại các thông điệp. Tôi thường thích nhật ký OnWarning OnError để theo dõi tất cả các cảnh báo và thông báo lỗi xảy ra trong gói. Bạn có nhiều nhà cung cấp khác nhau để lưu dữ liệu ghi nhật ký. Tôi thích sử dụng SQL Server để có thể truy vấn thông tin ghi nhật ký.

Các tùy chọn ghi nhật ký được hiển thị từ SSIS 2012:

Để bật đăng nhập một gói, bạn cần nhấp vào gói Business Intelligence Development Studio (BIDS) nếu bạn đang phát triển các gói trong SSIS 2005-2008 R2 hoặc SQL Server Data Tools (SSDT) nếu bạn đang phát triển các gói trong SSIS 2012.

Nhấp vào SSIS và sau đó nhấp vào Logging...

Bạn sẽ thấy hộp thoại Định cấu hình nhật ký SSIS.

Ở phía bên trái, bạn có thể kiểm tra gói hoặc các tác vụ riêng lẻ để ghi dữ liệu sự kiện.

Trên Nhà cung cấp và Nhật ký , bạn có thể chọn một nhà cung cấp thích hợp mà bạn có thể lưu thông tin nhật ký. Ảnh chụp màn hình bên dưới cho thấy thông tin sự kiện được ghi lại trong cơ sở dữ liệu SQL Server bằng trình quản lý kết nối OLEDB_PracticeDB .

Trên Chi tiết , bạn có thể chọn những sự kiện bạn muốn ghi lại. Ảnh chụp màn hình dưới đây cho thấy rằng tôi đang ghi lại các sự kiện sau.

  • OnError
  • Thông tin về
  • OnTaskFailed
  • OnWarning

Cảm ơn @William Todd Salzman để đề xuất OnTaskFailed sự kiện

Hình minh họa gói mẫu:

Giả sử chúng ta có một gói có tên là SO_15004109.dtsx với Nhiệm vụ luồng dữ liệu Nhiệm vụ tập lệnh . Nhiệm vụ luồng dữ liệu chỉ là một hình giả không có thành phần nào bên trong.

Tác vụ script có đoạn mã sau trong phương thức Main để kích hoạt thông tin tùy chỉnh, cảnh báo và thông báo lỗi để chúng ta có thể quan sát cách nó được ghi lại trong nguồn dữ liệu ghi nhật ký. Mã được viết cho SSIS 2012 nên bạn có thể cần phải thay đổi nó cho SSIS 2005. Tôi đã chọn VB.NET thay vì C# bởi vì bạn đã gắn thẻ câu hỏi này trong và SSIS 2005 chỉ hỗ trợ VB.NET.

Mã tác vụ tập lệnh trong VB.NET cho SSIS 2005 trở lên.

#Region "Imports"
Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Runtime
#End Region

<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
    Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

    Public Sub Main()

        Dim fireAgain As Boolean = False
        Dts.Events.FireInformation(101, "Custom Script Information", "This is a test information message.", String.Empty, 0, fireAgain)
        Dts.Events.FireWarning(201, "Custom Script Warning", "This is a test warning message.", String.Empty, 0)
        Dts.Events.FireError(201, "Custom Script Error", "This is a test error message.", String.Empty, 0)

        Dts.TaskResult = ScriptResults.Success
    End Sub

#Region "ScriptResults declaration"
   
    Enum ScriptResults
        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success
        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    End Enum

#End Region

End Class

Nếu chúng tôi thực thi gói, gói sẽ không thành công vì chúng tôi đã phát sinh lỗi trong Tác vụ tập lệnh .

Nếu bạn điều hướng đến nguồn dữ liệu nơi bạn ghi lại lỗi, bạn sẽ thấy rằng SSIS tạo một bảng để ghi thông tin nếu bạn chọn nhà cung cấp ghi nhật ký SQL Server. Bảng dưới đây liệt kê bảng ghi nhật ký mà SSIS tạo trong cơ sở dữ liệu SQL Server được chọn làm nhà cung cấp nhật ký.

SSIS Version   Log table name    Table type
-------------- ----------------  ----------
SSIS 2005      dbo.sysdtslog90   User
SSIS 2008      dbo.sysdtslog100  User
SSIS 2008 R2   dbo.sysssislog    System
SSIS 2012      dbo.sysssislog    System

Truy vấn bên dưới đã được thực thi trong cơ sở dữ liệu để xem các sự kiện được gói mẫu này nắm bắt. Bạn sẽ nhận thấy một số thông báo hai lần vì các sự kiện được ghi lại cho từng vùng chứa và nhiệm vụ. Bảng có tên là dbo.sysssislog vì gói đã được tạo trong SSIS 2012.

select id, event, source, message from dbo.sysssislog;

Kinh nghiệm cá nhân với việc ghi nhật ký:

Tôi đã thành công khá tốt khi chỉ xem thông báo lỗi ghi nhật ký để hiểu điều gì đã xảy ra. Theo tôi, việc gỡ lỗi các gói trong môi trường sản xuất là không nên. Tuy nhiên, tốt hơn là ghi lại các sự kiện nhật ký.

Khi tôi làm việc trong SSIS 2005 và 2008, tôi đã tạo các báo cáo dựa trên SSRS truy vấn bảng nhật ký để tạo báo cáo hàng ngày về việc thực hiện công việc và gửi tệp đính kèm PDF cho những người quan tâm.

Mọi thứ đã được cải thiện trong SSIS 2012 khi công cụ này đi kèm với khả năng báo cáo tích hợp với Danh mục dịch vụ tích hợp tạo cơ sở dữ liệu có tên SSIDB .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm một cột vào bảng hiện có và đánh số duy nhất chúng trên MS SQL Server

  2. Truy vấn cơ sở dữ liệu chéo, kết hợp ưu điểm và nhược điểm

  3. Sự cố với T-SQL TRY CATCH?

  4. Thủ tục được lưu trữ Hết thời gian .. Thả, sau đó Tạo và nó lại hoạt động?

  5. Đổi tên một số Bảng thành Tên Bảng + DDMMYYYY