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

Làm cách nào để sửa đổi biến trong SSIS?

Như @Yuck và @devarc đã lưu ý, có hai giá trị khác nhau và riêng biệt a Biến nắm giữ. Giá trị thời gian thiết kế là giá trị bạn gán khi biến được tạo lần đầu tiên. Trong trường hợp của bạn, biến giữ C:\ Test.txt làm giá trị thời gian thiết kế. Mỗi khi bạn mở gói, nó sẽ hiển thị C:\ Test.txt cho đến khi bạn thay đổi nó trong

Để làm cho giá trị của một biến thay đổi trong khi gói đang chạy, các tùy chọn của bạn là đặt giá trị hoặc tính toán giá trị đó. Ở đây tôi đã tạo một biến cấp độ gói CurrentFile với giá trị của C:\ Test.txt

Một điều thường khiến mọi người bối rối là họ đã thay đổi chính xác giá trị thời gian chạy nhưng khi họ chạy nó trong BIDS, họ thấy giá trị "cũ". Giá trị hiển thị trong cửa sổ Biến không thay đổi trong quá trình thực thi gói.

Trong quá trình thực thi gói, cửa sổ Biến của tôi vẫn hiển thị giá trị thời gian thiết kế (C:\ Test.txt) nhưng giá trị thực được phản ánh trong cửa sổ Địa phương (C:\ Test2.txt)

Đặt giá trị

Giá trị của hầu hết mọi thứ trong SSIS có thể được thiết lập tại thời điểm chạy thông qua một tập hợp chi tiết tùy chọn dòng lệnh hoặc thông qua cấu hình các nguồn. Sự khác biệt lớn nhất trong suy nghĩ của tôi là cách tiếp cận này là giá trị sẽ luôn là giá trị cho toàn bộ thời gian thực thi gói. Các lệnh gọi tuần tự hoặc song song của một gói có thể thay đổi giá trị đó nhưng đối với that thực thi giá trị sẽ không đổi (trừ một sửa đổi rõ ràng giá trị.

/ BỘ

Thực thi dòng lệnh (dtexec.exe), nhấp chuột phải vào gói và chạy từ hệ thống tệp (dtexecUI.exe) hoặc tạo bước công việc SQL Agent của Dịch vụ tích hợp máy chủ SQL đều cho phép cung cấp giá trị thời gian chạy thông qua lệnh SET . Sử dụng biến trên, lệnh sau sẽ đặt giá trị thời gian chạy thành C:\Test2.txt

dtexec /file C:\Generated.dtsx /set \Package.Variables[User::CurrentFile].Properties[Value];"C:\Test2.txt"

Cấu hình

SSIS cung cấp một tùy chọn để tạo các nguồn cấu hình để cung cấp các giá trị thời gian chạy cho các gói. Bài viết tôi đã liên kết ở trên thực hiện tốt hơn nhiều mô tả ưu và nhược điểm của các tùy chọn cấu hình so với những gì tôi sẽ làm ở đây. Tôi sẽ nói rằng tôi thường sử dụng cả hai - lệnh SET của tôi định cấu hình trình quản lý kết nối sau đó được gói sử dụng để tìm tập hợp cấu hình gói "đầy đủ".

Tính giá trị

Có nhiều tác vụ trong SSIS có thể thay đổi giá trị của một biến cũng như việc sử dụng Biểu thức để thay đổi giá trị. Tôi xem đây là những thứ hoạt động dựa trên giá trị trong khi gói hàng đang trong chuyến bay.

Nhiệm vụ

Tác vụ tập lệnh là một trong những cơ chế thường được sử dụng nhất cho những người mới bắt đầu nhưng tôi thấy các công cụ khác trong bộ công cụ SSIS thường phù hợp hơn để thay đổi các giá trị biến.

Vùng chứa vòng lặp Foreach Thực thi tác vụ SQL là hai trong số các Nhiệm vụ lớn khác mà bạn nên xem xét để gán giá trị biến.

Biểu thức

Biểu thức là viên kẹo vinh quang nhất trong hộp công cụ SSIS. Hầu hết mọi "thứ" trong SSIS đều hiển thị các thuộc tính để cấu hình. Điều đó hữu ích, nhưng việc sử dụng chỉ định một biểu thức để xây dựng các thuộc tính đó là một điều tuyệt vời.

Ví dụ:hãy tưởng tượng 3 biến RootFolder , FileNameComputedCurrentFile với các giá trị của C:\, File2.txt và chuỗi rỗng. Trên cửa sổ Thuộc tính cho ComputedCurrentFile chúng tôi sẽ thay đổi giá trị cho AssessAsExpression từ False thành True và sau đó sử dụng một biểu thức như @[User::RootFolder]+ "\\" [email protected][User::FileName] Điều đó chỉ đơn giản là nối giá trị của hai biến đầu tiên với nhau. Điều này có thể hữu ích nếu tên tệp để xử lý là chuẩn nhưng thư mục nguồn thay đổi thường xuyên. Hoặc nếu chúng ta đang nói về đầu ra, chúng ta thường sử dụng các biểu thức để tạo tên tệp đầu ra bằng cách sử dụng ngày và có thể là thời gian gói đang chạy.

Cuối cùng, không có gì ngăn cản sự pha trộn và kết hợp các cách tiếp cận này. Tôi thường sử dụng cấu hình để trỏ một trình kê tệp vào đúng thư mục bắt đầu và sau đó sử dụng các giá trị được tính toán để xác định tệp hiện tại để xử lý.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngừng bắt SQL Server làm công việc bẩn thỉu của bạn

  2. Cách chuyển đổi giá trị được phân tách bằng dấu phẩy thành các hàng trong máy chủ sql

  3. Ràng buộc biểu thức chính quy SQL Server

  4. Chuyển đổi ‘time’ thành ‘datetime2’ trong SQL Server (Ví dụ T-SQL)

  5. di chuyển dữ liệu từ MS SQL sang PostgreSQL?