Breaking News
Loading...
25/07/2013

Làm thế nào kích hoạt Trigger khi thực hiện insert trong SSIS?

Hôm nay trong nhóm DBA có 1 anh nêu lên vấn đề như sau, tôi trích lại đoạn chat:

  • Có một kinh nghiệm về BULK INSERT thường gặp trong SSIS hoặc trong lúc load data vào table có trigger
  • Cái trigger nó sẽ không fired
  • Phải set thêm thuộc tính cho nó mới được
Mọi người yêu cầu anh ta đưa ta dẫn chứng.

Có thể hiểu đơn giản là anh ta dùng SSIS để insert dữ liệu vào 1 table có trigger, có vẻ như trong SSIS có 1 thuộc tính nào đó, nếu ta không cấu hình nó thì khi insert dữ liệu qua SSIS, các trigger hiện có trong table destination sẽ không hoạt động.

Sau một lúc tìm tòi trên Google, tôi tìm thấy 1 bài viết nói về vấn đề này, với tiêu đề English như sau:

OLE DB Destination task uses a bulk insert, triggers are not fired by default. From BULK INSERT

Để enable trigger khi load data dùng SSIS, ta có 2 cách:

Cách 1:

Trong OLE DB Destination, click phải chuột và chọn 'Show Advanced Editor...'

Sau đó điền giá trị 'FIRE_TRIGGERS' vào Mục FastLoadOptions, lưu ý có dấu phẩy.

Cách 2:

Cách trên hữu dụng khi ta đang ở 'Table or view - fast load' Data access mode như hình bên dưới.

Nếu ta chuyển sang 'Table or View' data access mode, thì các trigger sẽ hoạt động bình thường.

Vậy là hôm nay học được thêm 1 kiến thức mới về SSIS.




2 comments:

  1. Còn theo 1 link khác tôi tìm hiểu thêm thì có vẻ nếu ta dùng OLE DB Destination thì mới cần cấu hình như trên, nếu ta dùng SQL Server Destination thì không cần cấu hình. Tôi chưa kiểm chứng điều này vì không gấp và không cần thiết, chỉ note lại về kiến thức này:
    Tham khảo: http://www.codeproject.com/Tips/43903/SSIS-insert-bulk-of-data-into-remote-table-with-tr

    ReplyDelete
    Replies
    1. Sau khi nghe comment trên, anh DBA trên nói rằng SQL Server Destination chỉ dùng được khi ETL nằm chung 1 server với SQL Server. Tôi không rõ điều này, lại thêm 1 kiến thức mới, tìm hiểu trên MSDN thì đúng là như vậy thật. Nguyên văn như sau:

      "You cannot use the SQL Server destination in packages that access a SQL Server database on a remote server"

      Tham khảo: http://msdn.microsoft.com/en-us/library/ms141095.aspx

      Delete

 
Toggle Footer