การกำหนดค่าแพ็คเกจ SSIS 2008 ถูกละเว้น


10

ด้วยการเปลี่ยนแปลงการกำหนดค่าแพคเกจในปี 2008 เทียบกับปี 2005 เมื่อฉันระบุ / ConfigFile something.dtsConfig บนบรรทัดคำสั่งตัวแปรที่กำหนดในแพ็คเกจจะเก็บค่าเวลาการออกแบบแทนการใช้การตั้งค่าจากไฟล์กำหนดค่า

ฉันค่อนข้างแน่ใจว่าฉันเข้าใจวิธีการใช้ไฟล์ปรับแต่งภายนอกเพื่อใช้งานได้เลย ฉันได้อ่านบทความที่บอกว่ามีเพียงการกำหนดค่าในขณะออกแบบเท่านั้นที่จะเขียนทับการโหลดไฟล์ภายนอก นี่หมายความว่าฉันสามารถเปลี่ยนตัวแปรเป็นสตริงว่างได้แล้วพวกมันจะถูกเขียนทับหรือไม่? ฉันไม่สามารถลบตัวแปรอย่างสมบูรณ์! แล้วจำนวนเต็มล่ะ?

ฉันเคยเห็นบทความที่กล่าวถึงการปิดโดยใช้การกำหนดค่าแพคเกจในแพคเกจ

ฉันสามารถใช้ SSIS Package Editor หรือตัวแก้ไข XML เพื่อเปลี่ยนพา ธ ของไฟล์การกำหนดค่าในแพ็คเกจและจากนั้นจะใช้การตั้งค่าของไฟล์นั้น "ครั้งสุดท้าย" (โดยไม่คำนึงถึงตัวเลือกภายนอก / ConfigFile) แต่ฉันไม่ต้องการ การเปลี่ยนแพ็คเกจ ฉันต้องการแพ็คเกจหนึ่งที่มี Test.dtsConfig และ Production.dtsConfig และสามารถสลับไปมาได้โดยไม่ต้องเปลี่ยนแพคเกจ

อะไรคือวิธีที่แนะนำให้ทำตอนนี้?


1
คุณอาจพบความโล่งใจที่นี่บนฟอรัม SQLServerCentral คำอธิบายของการเปลี่ยนแปลงพฤติกรรมอยู่ที่นี่ - หัวข้อการเปลี่ยนแปลงพฤติกรรมที่เกี่ยวข้องกับการกำหนดค่าแพคเกจ
แมเรียน

โปรดดูไฟล์ต่อไปนี้จะมีความคิดเกี่ยวกับสิ่งที่แพคเกจและการกำหนดค่าที่ผมพูดเกี่ยวกับ: Config และแบทช์ , แพคเกจการทดสอบและReadme
แมเรียน

คำตอบ:


10

คุณต้องคำนึงถึงว่าเมื่อใช้งาน BIDS แพคเกจจะพิจารณาค่าตัวแปรจากไฟล์กำหนดค่าก่อนและเฉพาะในกรณีที่ไฟล์ตั้งค่าไม่มีอยู่มันจะส่งคำเตือนและจะนำค่าจากแพ็คเกจไปใช้

ตอนนี้สถานการณ์ในบรรทัดคำสั่งแตกต่างกันเล็กน้อย คุณสามารถมีสถานการณ์ต่อไปนี้:

  1. เรียกใช้แพคเกจในบรรทัด cmd โดยไม่เลือกไฟล์ปรับแต่งใด ๆ :

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • หากไฟล์ config ดั้งเดิม (ลองตั้งชื่อมันว่า Prod) ไม่มีอยู่ในพา ธ เดียวกันที่กำหนดไว้ในเมทาดาทาของแพ็คเกจจะใช้ค่าจากภายในแพ็คเกจและคุณจะได้รับคำเตือนว่าไฟล์ config หายไป
    • หากไฟล์กำหนดค่าดั้งเดิมมีอยู่และใช้ได้แล้วค่าจากไฟล์กำหนดค่าจะถูกใช้ (ค่าภายในจะถูกข้าม)
  2. เรียกใช้แพคเกจในบรรทัด cmd โดยไม่ได้เลือกไฟล์ปรับแต่งใด ๆ แต่ด้วยชุดตัวแปรในการโทร:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • หากไฟล์ config ต้นฉบับไม่มีอยู่ค่าจะถูกนำมาจากการเรียกแพคเกจ / SET
    • หากไฟล์การกำหนดค่าดั้งเดิมมีอยู่แล้วค่าจะถูกนำมาจากไฟล์กำหนดค่าและแม้แต่ / SET จะถูกละเว้น (ซึ่งจะใช้เฉพาะในกรณีข้างต้น);
  3. เรียกใช้แพคเกจในบรรทัด cmd ด้วยไฟล์ config ใหม่ (สมมติว่า DEV แทน Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • หากมีไฟล์ config (Dev) ใหม่และ old (Prod) ไม่มีอยู่แสดงว่ามีการใช้ค่าจากนั้น
    • หากทั้งไฟล์กำหนดค่า Dev และ Prod มีอยู่จะใช้เฉพาะค่าจาก Prod เท่านั้น (DEV ถูกบายพาสแม้ว่าจะระบุไว้ในการเรียกบรรทัดคำสั่ง);
  4. เรียกใช้แพคเกจในบรรทัด cmd ด้วยไฟล์ config ใหม่และคำสั่ง SET ในการโทร:

    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"
    • หากมีไฟล์กำหนดค่าทั้งสองอยู่ระบบจะใช้ Prod ส่วนไฟล์อื่น ๆ จะไม่สนใจแม้แต่ชุด
    • หากไม่มีไฟล์กำหนดค่าจะใช้ค่า SET

ดังนั้นโดยย่อหากคุณต้องการใช้ไฟล์กำหนดค่าใหม่คุณจะต้องเปลี่ยนชื่อ / ย้ายไฟล์เก่าและเรียกแพ็คเกจด้วย / configFile หากยังไม่เพียงพอและต้องการแทนที่แม้แต่ไฟล์ปรับแต่งใหม่ให้ใช้ตัวแปร / SET หรือคุณสามารถข้ามไฟล์ปรับแต่งและเพียงแค่ใช้ / ชุดคำสั่งในการเรียกแบทช์

หวังว่าจะมีแสงสว่างในความเป็นไปได้ของคุณ


ดังนั้นดูเหมือนว่าหนึ่งในปัญหาใหญ่คือกล่องเส้นทางบนการพัฒนาของฉันเหมือนกับ taht บนเซิร์ฟเวอร์ในระหว่างการดำเนินการเพื่อให้เส้นทางไปยังการกำหนดค่าในแพคเกจถูกต้องเสมอ
เคดรูส์

ดังนั้นฉันคิดว่าฉันควรจะมี Dev, Test and Prod, ให้แพ็คเกจชี้ไปที่ Dev เสมอและไม่เคยมี Dev config บนเซิร์ฟเวอร์ของฉันและจากนั้นฉันสามารถสร้าง configs บนเซิร์ฟเวอร์และสามารถทำงานกับ config ต่าง ๆ ได้ตามต้องการ การกำหนดค่า Dev ในแพ็คเกจจะไม่ถูกค้นพบ ดังนั้นฉันสามารถดีบักโดยใช้ Dev config แต่แล้วฉันจะมีปัญหาในการใช้งานจากบรรทัดคำสั่งบนกล่อง dev เพราะมันจะพบว่า dev config
เคดรูส์

ฉันถือว่าคุณเห็นด้วยว่านี่ซับซ้อนกว่าที่ควรจะใช่ไหม? เช่นเดียวกับที่พวกเขาได้รับฟีเจอร์ใหม่หนึ่งตัว (การโหลดซ้ำ) ในการเปลี่ยนเป็นปี 2008 แต่ฆ่าสถานการณ์การใช้งานทั่วไปของการกำหนดค่าแพคเกจ
เคดรูส์

ใช่ใช่ฉันเห็นด้วยว่ามันน่าเกลียดกว่าที่ควรจะเป็น ฉันใช้เวลามากในการคิดออกเพราะฉันลืมเปลี่ยนชื่อไฟล์ config เดิม :-) ฉันชอบมันมากกว่านี้ตามลำดับต่อไปนี้: SET, / configFile, config ต้นฉบับ, ค่าแพ็คเกจภายใน มันจะได้ทำให้ความรู้สึกมากขึ้นสำหรับฉัน ..
แมเรียน

ไม่มีบทความใดที่ฉันอ่านจริงๆพูดถึงว่าเป็นไฟล์กำหนดค่าดั้งเดิมที่สามารถเข้าถึงได้ซึ่งเป็นปัญหาจำนวนมาก ตอนนี้ฉันเห็นว่าทำไมพวกเขาจึงเผยแพร่ SSIS Package Editor เพื่อให้คุณสามารถเปลี่ยนแปลงได้ภายในแพ็คเกจโดยไม่ต้องเปิด BIDS
เคดรูส์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.