Cấu hình gói SSIS 2008 bị bỏ qua


10

Với sự thay đổi cấu hình gói năm 2008 so với năm 2005 khi tôi chỉ định / ConfigFile Something.dtsConfig trên dòng lệnh, các biến được xác định trong gói đang giữ giá trị thời gian thiết kế của chúng thay vì sử dụng cài đặt từ tệp cấu hình.

Tôi không chắc là tôi hiểu CÁCH để sử dụng tập tin cấu hình bên ngoài. Tôi đã đọc các bài báo nói rằng chỉ các cấu hình thời gian thiết kế được đặt sẽ ghi đè tải của tệp bên ngoài. Điều này có nghĩa là tôi có thể thay đổi các biến thành chuỗi trống và sau đó chúng sẽ bị ghi đè? Tôi không thể xóa biến hoàn toàn! Còn số nguyên thì sao?

Tôi đã thấy các bài viết đề cập đến TẮT bằng cách sử dụng cấu hình gói trong gói.

Tôi có thể sử dụng Trình soạn thảo gói SSIS hoặc trình soạn thảo XML để thay đổi đường dẫn tệp cấu hình trong gói và sau đó nó sẽ sử dụng cài đặt của tệp đó là "lần cuối" (bất kể tùy chọn bên ngoài / ConfigFile), nhưng tôi không muốn thay đổi gói. Tôi muốn một gói với Test.dtsConfig và Production.dtsConfig và có thể trao đổi qua lại mà không cần thay đổi gói.

Cách được đề nghị để làm điều này bây giờ là gì?


1
Bạn có thể tìm thấy sự cứu trợ của bạn ở đây , trên diễn đàn SQLServerCentral. Một số giải thích về thay đổi hành vi có ở đây - phần Thay đổi hành vi liên quan đến Cấu hình gói.
Marian

Vui lòng xem các tệp sau đây, để có ý tưởng về các gói và cấu hình mà tôi đang nói đến: Cấu hình và lô , Gói thử nghiệmReadme .
Mary

Câu trả lời:


10

Bạn phải tính đến việc khi chạy BIDS, gói sẽ lấy giá trị biến đầu tiên từ tệp cấu hình và chỉ khi tệp cấu hình không tồn tại, nó sẽ đưa ra cảnh báo và giá trị sẽ được lấy từ gói.

Bây giờ, tình huống trong dòng lệnh là một chút khác nhau. Bạn có thể có các tình huống sau:

  1. chạy gói trong dòng cmd mà không có tập tin cấu hình nào được chọn:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • nếu tệp cấu hình gốc (đặt tên là Prod) không tồn tại trong cùng một đường dẫn được xác định trong siêu dữ liệu của gói, các giá trị từ bên trong gói được sử dụng và bạn sẽ nhận được cảnh báo rằng tệp cấu hình bị thiếu;
    • nếu tệp cấu hình gốc tồn tại và hợp lệ, thì các giá trị từ tệp cấu hình sẽ được sử dụng (các giá trị bên trong sẽ được bỏ qua);
  2. chạy gói trong dòng cmd mà không có bất kỳ tệp cấu hình nào được chọn, nhưng với biến được đặt trong cuộc gọi:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • nếu tệp cấu hình gốc không tồn tại, thì giá trị được lấy từ lệnh gọi gói / SET;
    • nếu tệp cấu hình ban đầu tồn tại, thì giá trị được lấy từ tệp cấu hình và thậm chí / SET bị bỏ qua (điều này chỉ được sử dụng trong trường hợp trên);
  3. chạy gói trong dòng cmd với tệp cấu hình mới (giả sử DEV thay vì Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • nếu tệp cấu hình mới (Dev) tồn tại và cũ (Prod) không có, thì các giá trị từ nó sẽ được sử dụng;
    • nếu cả tệp cấu hình Dev và Prod tồn tại, thì chỉ các giá trị từ Prod được sử dụng (DEV bị bỏ qua ngay cả khi được chỉ định trong lệnh gọi dòng lệnh);
  4. chạy gói trong dòng cmd với tệp cấu hình mới và câu lệnh SET trong cuộc gọi:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • nếu cả hai tệp cấu hình tồn tại, Prod sẽ được sử dụng, tất cả các tệp khác bị bỏ qua, ngay cả SET;
    • nếu không có tệp cấu hình tồn tại, giá trị SET sẽ được sử dụng;

Vì vậy, trong ngắn hạn, nếu bạn muốn sử dụng tệp cấu hình mới, bạn sẽ phải đổi tên / di chuyển tệp cũ và gọi gói bằng / configFile. Nếu điều đó là không đủ và muốn ghi đè ngay cả tệp cấu hình mới, thì hãy sử dụng biến / SET. Hoặc bạn có thể bỏ qua bất kỳ tệp cấu hình nào và chỉ sử dụng các câu lệnh / SET trong lệnh gọi bó.

Hy vọng rằng sẽ làm sáng tỏ một số khả năng của bạn.


Vì vậy, có vẻ như một trong những vấn đề lớn là đường dẫn trên hộp phát triển của tôi giống hệt với taht trên máy chủ trong khi thực thi để đường dẫn đến cấu hình trong gói luôn hợp lệ.
Cade Roux

Vì vậy, tôi nghĩ rằng tôi nên có Dev, Test và Prod, gói luôn luôn trỏ đến Dev và không bao giờ có cấu hình Dev trên Máy chủ của tôi và sau đó tôi có thể tạo nhiều cấu hình trên máy chủ và có thể chạy với các cấu hình khác nhau tùy ý Dev config trong gói sẽ không bao giờ được tìm thấy. Vì vậy, tôi có thể gỡ lỗi bằng cách sử dụng cấu hình Dev, nhưng sau đó tôi sẽ gặp sự cố khi chạy nó từ dòng lệnh trên hộp dev vì nó sẽ tìm thấy dev config đó.
Cade Roux

Tôi giả sử bạn đồng ý rằng điều này thực sự phức tạp hơn nhiều so với nó, phải không? Giống như họ có một tính năng nhỏ mới (tải lại) trong thay đổi năm 2008 nhưng đã giết chết kịch bản sử dụng phổ biến nhất của các cấu hình gói.
Cade Roux

Chà, CÓ, tôi đồng ý rằng điều đó xấu hơn nó nên được. Tôi đã mất rất nhiều để tìm ra điều này, bởi vì tôi luôn quên đổi tên tập tin cấu hình gốc :-). Tôi muốn nó nhiều hơn theo thứ tự sau: SET, / configFile, cấu hình gốc, giá trị gói bên trong. Nó sẽ có ý nghĩa hơn đối với tôi ..
Marian

Không có bài viết nào tôi đọc thực sự đề cập rằng đó là tệp cấu hình gốc có thể truy cập được, đây là vấn đề rất nhiều. Bây giờ tôi thấy lý do tại sao họ xuất bản Trình chỉnh sửa gói SSIS đó để bạn có thể thay đổi điều đó trong gói mà không phải mở BIDS.
Cade Roux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.