แชร์ผ่าน


กําหนดค่า SQL Server ในกิจกรรมการคัดลอก

บทความนี้สรุปวิธีการใช้กิจกรรมการคัดลอกในไปป์ไลน์ข้อมูลเพื่อคัดลอกข้อมูลจากและไปยัง SQL Server

การกําหนดค่าที่ได้รับการสนับสนุน

สําหรับการกําหนดค่าของแต่ละแท็บภายใต้กิจกรรมการคัดลอก ให้ไปที่ส่วนต่อไปนี้ตามลําดับ

ทั่วไป

โปรดดูคําแนะนําการตั้งค่าทั่วไปเพื่อกําหนดค่าแท็บ การตั้งค่าทั่วไป

แหล่งที่มา

คุณสมบัติต่อไปนี้ได้รับการสนับสนุนสําหรับ SQL Server ภายใต้แท็บ แหล่งข้อมูล ของกิจกรรมการคัดลอก

สกรีนช็อตที่แสดงแท็บต้นทางและรายการคุณสมบัติ

จําเป็นต้องมีคุณสมบัติต่อไปนี้:

  • ชนิดของที่เก็บข้อมูล: เลือก ภายนอก

  • การเชื่อมต่อ: เลือกการเชื่อมต่อเซิร์ฟเวอร์ SQL จากรายการการเชื่อมต่อ ถ้าไม่มีการเชื่อมต่อ ให้สร้างการเชื่อมต่อเซิร์ฟเวอร์ SQL ใหม่ โดยการเลือกใหม่

  • ชนิดการเชื่อมต่อ: เลือก SQL Server

  • ใช้คิวรี: ระบุวิธีการอ่านข้อมูล คุณสามารถเลือกตาราง คิวรี หรือ Stored Procedure ได้ รายการต่อไปนี้อธิบายถึงการกําหนดค่าของแต่ละการตั้งค่า:

    • ตาราง: อ่านข้อมูลจากตารางที่ระบุ เลือกตารางแหล่งข้อมูลของคุณจากรายการดรอปดาวน์ หรือเลือก แก้ไข เพื่อป้อนด้วยตนเอง

    • คิวรี: ระบุคิวรี SQL แบบกําหนดเองเพื่ออ่านข้อมูล ตัวอย่างคือselect * from MyTable หรือเลือกไอคอนดินสอเพื่อแก้ไขในตัวแก้ไขโค้ด

      สกรีนช็อตที่แสดงการตั้งค่าคิวรี

    • Stored Procedure: ใช้ Stored Procedure ที่อ่านข้อมูลจากตารางแหล่งข้อมูล คําสั่ง SQL สุดท้ายต้องเป็นคําสั่ง SELECT ใน Stored Procedure

      • ชื่อ Stored Procedure: เลือกกระบวนงานที่เก็บไว้ หรือระบุชื่อของกระบวนงานที่เก็บไว้ด้วยตนเองเมื่อเลือกแก้ไขเพื่ออ่านข้อมูลจากตารางต้นทาง

      • พารามิเตอร์ Stored Procedure: ระบุค่าสําหรับพารามิเตอร์ Stored Procedure ค่าที่อนุญาตคือคู่ชื่อหรือค่า ชื่อและปลอกของพารามิเตอร์ต้องตรงกับชื่อและการกําหนดปลอกของพารามิเตอร์ Stored Procedure คุณสามารถเลือก นําเข้าพารามิเตอร์ เพื่อรับพารามิเตอร์กระบวนการที่เก็บไว้ของคุณได้

        สกรีนช็อตที่แสดงการตั้งค่ากระบวนการที่จัดเก็บไว้

ภายใต้ ขั้นสูง คุณสามารถระบุเขตข้อมูลต่อไปนี้:

  • หมดเวลาคิวรี (นาที): ระบุการหมดเวลาสําหรับการดําเนินการคําสั่งแบบสอบถาม ค่าเริ่มต้นคือ 120 นาที ถ้าพารามิเตอร์ถูกตั้งค่าสําหรับคุณสมบัตินี้ ค่าที่ได้รับอนุญาตคือค่าช่วงเวลา เช่น "02:00:00" (120 นาที)

  • ระดับการแยก: ระบุลักษณะการทํางานของการล็อคธุรกรรมสําหรับแหล่งข้อมูล SQL ค่าที่อนุญาตคือ: ไม่มี, อ่านผูกมัด, อ่านไม่ได้ผูกมัด, อ่านซ้ําได้, อนุกรมได้ หรือสแนปช็อต ถ้าไม่ได้ระบุ จะใช้ระดับการแยกเริ่มต้นของฐานข้อมูล โปรดดู IsolationLevel Enum สําหรับรายละเอียดเพิ่มเติม

    สกรีนช็อตที่แสดงการตั้งค่าระดับการแยก

  • ตัวเลือกพาร์ติชัน: ระบุตัวเลือกการแบ่งพาร์ติชันข้อมูลที่ใช้ในการโหลดข้อมูลจาก SQL Server ค่าที่อนุญาตคือ: ไม่มี (ค่าเริ่มต้น), พาร์ติชันจริงของตาราง และ ช่วงไดนามิก เมื่อเปิดใช้งานตัวเลือกพาร์ติชัน (นั่นคือ ไม่ใช่ ไม่มี) ระดับของการทํางานแบบขนานเพื่อโหลดข้อมูลจากเซิร์ฟเวอร์ SQL พร้อมกันจะได้รับการควบคุมโดย ระดับความ ขนานของการคัดลอกแบบขนานในแท็บการตั้งค่ากิจกรรมการคัดลอก

    • ไม่มี: เลือกการตั้งค่านี้เพื่อไม่ใช้พาร์ติชัน

    • พาร์ติชันจริงของตาราง: เมื่อใช้พาร์ติชันจริง คอลัมน์และกลไกของพาร์ติชันจะถูกกําหนดโดยอัตโนมัติตามข้อกําหนดตารางที่มีอยู่จริงของคุณ

    • ช่วงไดนามิก: เมื่อใช้คิวรีที่เปิดใช้งานแบบขนาน จําเป็นต้องเลือกพารามิเตอร์พาร์ติชันช่วง (?DfDynamicRangePartitionCondition) คิวรีตัวอย่าง: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition

      • ชื่อคอลัมน์พาร์ติชัน: ระบุชื่อของคอลัมน์ต้นทางใน จํานวนเต็มหรือชนิดวันที่/วันที่เวลา (int, smallint, bigint, date, smalldatetime, datetime, datetime2หรือ datetimeoffset) ที่ถูกใช้โดยช่วงการแบ่งพาร์ติชันสําหรับสําเนาแบบขนาน ถ้าไม่ได้ระบุ ดัชนีหรือคีย์หลักของตารางจะถูกตรวจสอบโดยอัตโนมัติ และใช้เป็นคอลัมน์พาร์ติชัน

        ถ้าคุณใช้คิวรีเพื่อดึงข้อมูลต้นทาง แล้ว hook ?DfDynamicRangePartitionCondition ในคําสั่ง WHERE ตัวอย่างเช่น ดูส่วน สําเนาแบบขนานจากฐานข้อมูล SQL

      • ส่วนที่ผูกด้านบนของพาร์ติชัน: ระบุค่าสูงสุดของคอลัมน์พาร์ติชันสําหรับการแยกช่วงพาร์ติชัน ค่านี้ใช้เพื่อตัดสินใจว่าจะดําเนินการแบ่งพาร์ติชัน ไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในตารางหรือผลลัพธ์คิวรีจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมจะตรวจหาค่าโดยอัตโนมัติ ตัวอย่างเช่น ดูส่วน สําเนาแบบขนานจากฐานข้อมูล SQL

      • ส่วนที่ผูกด้านล่างของพาร์ติชัน: ระบุค่าต่ําสุดของคอลัมน์พาร์ติชันสําหรับการแยกช่วงพาร์ติชัน ค่านี้ใช้เพื่อตัดสินใจว่าจะดําเนินการแบ่งพาร์ติชัน ไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในตารางหรือผลลัพธ์คิวรีจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมจะตรวจหาค่าโดยอัตโนมัติ ตัวอย่างเช่น ดูส่วน สําเนาแบบขนานจากฐานข้อมูล SQL

  • คอลัมน์เพิ่มเติม: เพิ่มคอลัมน์ข้อมูลเพิ่มเติมเพื่อจัดเก็บเส้นทางสัมพัทธ์หรือค่าคงที่ของไฟล์ต้นฉบับ นิพจน์ได้รับการสนับสนุนสําหรับอย่างหลัง

บันทึกคะแนนต่อไปนี้:

  • ถ้ามี การระบุคิวรี สําหรับแหล่งข้อมูล กิจกรรมการคัดลอกจะเรียกใช้คิวรีนี้กับแหล่งข้อมูล SQL Server เพื่อรับข้อมูล คุณยังสามารถระบุ Stored Procedure โดยการระบุชื่อ Stored Procedure และพารามิเตอร์ Stored Procedure ถ้า Stored Procedure ใช้พารามิเตอร์
  • เมื่อใช้กระบวนงานที่จัดเก็บไว้ในแหล่งข้อมูลเพื่อดึงข้อมูล หมายเหตุ ถ้ากระบวนงานที่เก็บไว้ของคุณถูกออกแบบมาเพื่อส่งกลับสคีมาที่แตกต่างกันเมื่อมีการส่งผ่านค่าพารามิเตอร์ที่แตกต่างกัน คุณอาจพบความล้มเหลวหรือเห็นผลลัพธ์ที่ไม่คาดคิดเมื่อนําเข้า schema จาก UI หรือเมื่อคัดลอกข้อมูลไปยังฐานข้อมูล SQL ด้วยการสร้างตารางอัตโนมัติ

ปลายทาง

คุณสมบัติต่อไปนี้ได้รับการสนับสนุนสําหรับ SQL Server ภายใต้ แท็บ ปลายทาง ของกิจกรรมการคัดลอก

สกรีนช็อตที่แสดงแท็บปลายทาง

จําเป็นต้องมีคุณสมบัติต่อไปนี้:

  • ชนิดของที่เก็บข้อมูล: เลือก ภายนอก

  • การเชื่อมต่อ: เลือกการเชื่อมต่อเซิร์ฟเวอร์ SQL จากรายการการเชื่อมต่อ ถ้าไม่มีการเชื่อมต่อ ให้สร้างการเชื่อมต่อเซิร์ฟเวอร์ SQL ใหม่ โดยการเลือกใหม่

  • ชนิดการเชื่อมต่อ: เลือก SQL Server

  • ตัวเลือกตาราง: คุณสามารถเลือก ใช้ที่มีอยู่ เพื่อใช้ตารางที่ระบุได้ หรือเลือก สร้างตาราง อัตโนมัติ เพื่อสร้างตารางปลายทางโดยอัตโนมัติถ้าตารางไม่มีอยู่ใน Schema ต้นทาง และโปรดทราบว่าการเลือกนี้ไม่ได้รับการรองรับเมื่อใช้ Stored Procedure เป็นลักษณะการทํางานการเขียน

    ถ้าคุณเลือก ใช้ที่มีอยู่:

    • ตาราง: เลือกตารางในฐานข้อมูลปลายทางของคุณจากรายการดรอปดาวน์ หรือตรวจสอบ แก้ไข เพื่อป้อนชื่อตารางของคุณด้วยตนเอง

    ถ้าคุณเลือก: สร้างตารางอัตโนมัติ:

    • ตาราง: ระบุชื่อสําหรับตารางปลายทางที่สร้างโดยอัตโนมัติของคุณ

ภายใต้ ขั้นสูง คุณสามารถระบุเขตข้อมูลต่อไปนี้:

  • ลักษณะการทํางานของการเขียน: กําหนดลักษณะการทํางานของการเขียนเมื่อแหล่งข้อมูลคือไฟล์จากที่เก็บข้อมูลตามไฟล์ คุณสามารถเลือกแทรก, Upsert หรือ Stored Procedure

    • แทรก: เลือกตัวเลือกนี้ใช้แทรกลักษณะการทํางานการเขียนเพื่อโหลดข้อมูลลงใน SQL Server

    • Upsert: เลือกตัวเลือกนี้ใช้ลักษณะการเขียน upsert เพื่อโหลดข้อมูลลงใน SQL Server

      • ใช้ TempDB: ระบุว่าจะใช้ตารางชั่วคราวส่วนกลางหรือตารางทางกายภาพเป็นตารางชั่วคราวสําหรับ upsert ตามค่าเริ่มต้น บริการจะใช้ตารางชั่วคราวส่วนกลางเป็นตารางชั่วคราวและคุณสมบัตินี้จะถูกเลือก

        สกรีนช็อตที่แสดงเลือกใช้ TempDB

      • เลือกเค้าร่าง DB ของผู้ใช้: เมื่อ ไม่ได้เลือก ใช้ TempDB ให้ระบุเค้าร่างชั่วคราวสําหรับการสร้างตารางชั่วคราวถ้ามีการใช้ตารางจริง

        หมายเหตุ

        คุณต้องมีสิทธิ์ในการสร้างและลบตาราง ตามค่าเริ่มต้น ตารางระหว่างกลางจะแชร์สคีมาเดียวกันกับตารางปลายทาง

        สกรีนช็อตที่แสดงว่าไม่เลือกใช้ TempDB

      • คอลัมน์หลัก: ระบุชื่อคอลัมน์สําหรับการระบุแถวที่ไม่ซ้ํากัน สามารถใช้คีย์เดี่ยวหรือชุดคีย์ได้อย่างใดอย่างหนึ่ง ถ้าไม่ได้ระบุ จะใช้คีย์หลัก

    • Stored Procedure: ใช้ Stored Procedure ที่กําหนดวิธีการใช้ข้อมูลต้นทางลงในตารางเป้าหมาย กระบวนการที่เก็บไว้นี้จะถูกเรียกใช้ต่อชุดงาน สําหรับการดําเนินการที่เรียกใช้เพียงครั้งเดียวและไม่เกี่ยวข้องกับข้อมูลต้นทาง ตัวอย่างเช่น ลบหรือตัดทอน ให้ใช้ คุณสมบัติสคริปต์ ก่อนคัดลอก

      • ชื่อ Stored Procedure: เลือกกระบวนงานที่เก็บไว้ หรือระบุชื่อของกระบวนงานที่เก็บไว้ด้วยตนเองเมื่อตรวจสอบแก้ไขเพื่ออ่านข้อมูลจากตารางต้นทาง

      • พารามิเตอร์ Stored Procedure:

        • ชนิดตาราง: ระบุชื่อชนิดตารางที่จะใช้ใน Stored Procedure กิจกรรมการคัดลอกจะทําให้ข้อมูลที่ถูกย้ายอยู่ในตารางชั่วคราวที่มีชนิดตารางนี้ จากนั้น โค้ด Stored Procedure สามารถผสานข้อมูลที่ถูกคัดลอกด้วยข้อมูลที่มีอยู่ได้
        • ชื่อพารามิเตอร์ชนิดตาราง: ระบุชื่อพารามิเตอร์ของชนิดตารางที่ระบุใน Stored Procedure
        • พารามิเตอร์: ระบุค่าสําหรับพารามิเตอร์ Stored Procedure ค่าที่อนุญาตคือคู่ชื่อหรือค่า ชื่อและปลอกของพารามิเตอร์ต้องตรงกับชื่อและการกําหนดปลอกของพารามิเตอร์ Stored Procedure คุณสามารถเลือก นําเข้าพารามิเตอร์ เพื่อรับพารามิเตอร์กระบวนการที่เก็บไว้ของคุณได้

        สกรีนช็อตที่แสดงการตั้งค่ากระบวนงานที่จัดเก็บไว้ในลักษณะการเขียนปลายทาง

  • จํานวนมากแทรกล็อคตาราง: เลือกใช่หรือไม่ (ค่าเริ่มต้น) ใช้การตั้งค่านี้เพื่อปรับปรุงประสิทธิภาพการคัดลอกในระหว่างการดําเนินการแทรกจํานวนมากในตารางที่ไม่มีดัชนีจากหลายไคลเอ็นต์ คุณสามารถระบุคุณสมบัตินี้เมื่อคุณเลือก แทรก หรือ Upsert เป็นลักษณะการทํางานการเขียนของคุณ สําหรับข้อมูลเพิ่มเติม ไปที่ BULK INSERT (Transact-SQL)

  • สคริปต์ก่อนคัดลอก: ระบุสคริปต์สําหรับคัดลอกกิจกรรมเพื่อดําเนินการก่อนที่จะเขียนข้อมูลลงในตารางปลายทางในการเรียกใช้แต่ละครั้ง คุณสามารถใช้คุณสมบัตินี้เพื่อล้างข้อมูลที่โหลดไว้ล่วงหน้า

  • เขียนการหมดเวลาของชุดงาน: ระบุเวลารอสําหรับการดําเนินการแทรกชุดงานเพื่อเสร็จสิ้นก่อนที่จะหมดเวลา ค่าที่อนุญาตคือช่วงเวลา ถ้าไม่ได้ระบุค่า การหมดเวลาจะใช้ค่าเริ่มต้นเป็น "02:00:00"

  • เขียนขนาดของชุดงาน: ระบุจํานวนแถวที่จะแทรกลงในตาราง SQL สําหรับแต่ละชุดงาน ค่าที่อนุญาตคือจํานวนเต็ม (จํานวนแถว) ตามค่าเริ่มต้น บริการจะกําหนดขนาดของชุดงานที่เหมาะสมแบบไดนามิกตามขนาดของแถว

  • การเชื่อมต่อพร้อมกันสูงสุด: ขีดจํากัดสูงสุดของการเชื่อมต่อพร้อมกันที่สร้างไปยังที่เก็บข้อมูลในระหว่างการเรียกใช้กิจกรรม ระบุค่าเมื่อคุณต้องการจํากัดการเชื่อมต่อที่เกิดขึ้นพร้อมกันเท่านั้น

การแม็ป

สําหรับการกําหนดค่าแท็บการแมป ถ้าคุณไม่ได้ใช้ SQL Server ด้วยตารางสร้างอัตโนมัติเป็นปลายทางของคุณ ให้ไปที่ การแมป

ถ้าคุณนํา SQL Server ไปใช้ด้วยตารางสร้างอัตโนมัติเป็นปลายทางของคุณ ยกเว้นการกําหนดค่าใน แมป คุณสามารถแก้ไขชนิดของคอลัมน์ปลายทางของคุณได้ หลังจากเลือก นําเข้า schemas คุณสามารถระบุชนิดคอลัมน์ในปลายทางของคุณได้

ตัวอย่างเช่น ชนิดของ คอลัมน์ ID ในแหล่งข้อมูลเป็นจํานวนเต็ม และคุณสามารถเปลี่ยนเป็นชนิดเลขทศนิยมเมื่อแมปไปยังคอลัมน์ปลายทาง

สกรีนช็อตของชนิดคอลัมน์ปลายทางการแมป

การตั้งค่า

สําหรับ การกําหนดค่าแท็บ การตั้งค่า ไปที่ กําหนดค่าการตั้งค่าอื่น ๆ ของคุณภายใต้แท็บ การตั้งค่า

สําเนาแบบขนานจากฐานข้อมูล SQL

ตัวเชื่อมต่อ SQL Server ในกิจกรรมการคัดลอกมีพาร์ติชันข้อมูลที่มีอยู่ภายในเพื่อคัดลอกข้อมูลแบบขนาน คุณสามารถค้นหาตัวเลือกการแบ่งพาร์ติชันข้อมูลบนแท็บ แหล่งข้อมูล ของกิจกรรมการคัดลอกได้

เมื่อคุณเปิดใช้งานการคัดลอกพาร์ติชัน กิจกรรมการคัดลอกจะเรียกใช้คิวรีแบบขนานกับแหล่งข้อมูล SQL Server ของคุณเพื่อโหลดข้อมูลตามพาร์ติชัน ระดับขนานจะถูกควบคุมโดย องศาของการคัดลอกแบบ ขนานในแท็บการตั้งค่ากิจกรรมการคัดลอก ตัวอย่างเช่น ถ้าคุณตั้งค่า ระดับความ ขนานของสําเนาเป็นสี่ บริการจะสร้างและเรียกใช้คิวรีสี่รายการพร้อมกันโดยยึดตามตัวเลือกและการตั้งค่าพาร์ติชันที่ระบุ ของคุณ และแต่ละคิวรีจะดึงข้อมูลบางส่วนจาก SQL Server ของคุณ

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

สถานการณ์สมมติ การตั้งค่าที่แนะนํา
โหลดทั้งหมดจากตารางขนาดใหญ่ ที่มีพาร์ติชันจริง ตัวเลือกพาร์ติชัน: พาร์ติชันจริงของตาราง

ในระหว่างการดําเนินการ บริการจะตรวจหาพาร์ติชันจริงโดยอัตโนมัติ และคัดลอกข้อมูลตามพาร์ติชัน

เมื่อต้องการตรวจสอบว่าตารางของคุณมีพาร์ติชันจริงหรือไม่คุณสามารถอ้างอิงไปยัง คิวรีนี้ได้
โหลดทั้งหมดจากตารางขนาดใหญ่ โดยไม่มีพาร์ติชันจริง ในขณะที่มีคอลัมน์จํานวนเต็มหรือวันที่เวลาสําหรับการแบ่งพาร์ติชันข้อมูล ตัวเลือกพาร์ติชัน: พาร์ติชันช่วงไดนามิก
คอลัมน์ พาร์ติชัน (ไม่บังคับ): ระบุคอลัมน์ที่ใช้ในการแบ่งพาร์ติชันข้อมูล ถ้าไม่ได้ระบุ จะใช้คอลัมน์คีย์หลัก
พาร์ติชันที่ผูกสูงสุด และ ขีดจํากัด ล่างของพาร์ติชัน (ไม่บังคับ): ระบุว่าคุณต้องการกําหนดการก้าวสู่พาร์ติชันหรือไม่ ซึ่งไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในตารางจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมอัตโนมัติตรวจพบค่า และอาจใช้เวลานานขึ้นอยู่กับค่า MIN และ MAX ขอแนะนําให้ระบุขอบเขตด้านบนและขอบเขตด้านล่าง

ตัวอย่างเช่น ถ้าคอลัมน์พาร์ติชัน "ID" ของคุณมีค่าตั้งแต่ 1 ถึง 100 และคุณตั้งค่าขีดจํากัดล่างเป็น 20 และขีดจํากัดสูงสุดเป็น 80 พร้อมกับการคัดลอกแบบขนานเป็น 4 บริการจะดึงข้อมูลโดยพาร์ติชัน 4 ตัว - ID ในช่วง <=20, [21, 50], [51, 80], และ >=81 ตามลําดับ
โหลดข้อมูลจํานวนมากโดยใช้คิวรีแบบกําหนดเอง โดยไม่มีพาร์ติชันจริง ในขณะที่มีคอลัมน์จํานวนเต็มหรือวันที่/วันที่เวลาสําหรับการแบ่งพาร์ติชันข้อมูล ตัวเลือกพาร์ติชัน: พาร์ติชันช่วงไดนามิก
คิวรี: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
คอลัมน์พาร์ติชัน: ระบุคอลัมน์ที่ใช้ในการแบ่งพาร์ติชันข้อมูล
พาร์ติชันที่ผูกสูงสุด และ ขีดจํากัด ล่างของพาร์ติชัน (ไม่บังคับ): ระบุว่าคุณต้องการกําหนดการก้าวสู่พาร์ติชันหรือไม่ ซึ่งไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในผลลัพธ์คิวรีจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมจะตรวจหาค่าโดยอัตโนมัติ

ตัวอย่างเช่น ถ้าคอลัมน์พาร์ติชัน "ID" ของคุณมีค่าตั้งแต่ 1 ถึง 100 และคุณตั้งค่าขีดจํากัดล่างเป็น 20 และขีดจํากัดสูงสุดเป็น 80 พร้อมกับการคัดลอกแบบขนานเป็น 4 บริการจะดึงข้อมูลตามพาร์ติชัน 4- ID ในช่วง <=20, [21, 50], [51, 80], และ >=81 ตามลําดับ

ต่อไปนี้คือตัวอย่างคิวรีเพิ่มเติมสําหรับสถานการณ์ที่แตกต่างกัน:
• คิวรีทั้งตาราง:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• คิวรีจากตารางที่มีการเลือกคอลัมน์และตัวกรองส่วนคําสั่งที่เพิ่มเติม:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
•คิวรีพร้อมคิวรีย่อย:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• คิวรีพร้อมพาร์ติชันในคิวรี่ย่อย:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

แนวทางปฏิบัติที่ดีที่สุดในการโหลดข้อมูลด้วยตัวเลือกพาร์ติชัน:

  • เลือกคอลัมน์ที่โดดเด่นเป็นคอลัมน์พาร์ติชัน (เช่นคีย์หลักหรือคีย์ที่ไม่ซ้ํากัน) เพื่อหลีกเลี่ยงการบิดเบือนข้อมูล
  • ถ้าตารางมีพาร์ติชันที่มีอยู่ภายใน ให้ใช้ตัวเลือก พาร์ติชัน พาร์ติชันของตาราง เพื่อให้ได้ประสิทธิภาพที่ดีขึ้น

คิวรีตัวอย่างเพื่อตรวจสอบพาร์ติชันจริง

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id 
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id 
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

ถ้าตารางมีพาร์ติชันจริง คุณจะเห็น "HasPartition" เป็น "yes" ดังต่อไปนี้

ภาพหน้าจอของผลลัพธ์คิวรี SQL

ข้อมูลสรุปของตาราง

ดูตารางต่อไปนี้สําหรับข้อมูลสรุปและข้อมูลเพิ่มเติมสําหรับกิจกรรมการคัดลอก SQL Server

ข้อมูลต้นทาง

ชื่อ รายละเอียด ค่า ต้องมี คุณสมบัติสคริปต์ JSON
ชนิดของที่เก็บข้อมูล ประเภทที่เก็บข้อมูลของคุณ ภายนอก ใช่ /
การเชื่อมต่อ การเชื่อมต่อของคุณไปยังที่เก็บข้อมูลต้นทาง < การเชื่อมต่อของคุณ > ใช่ การเชื่อมต่อ
ชนิดการเชื่อมต่อ ชนิดการเชื่อมต่อของคุณ เลือก SQL Server SQL Server ใช่ /
ใช้คิวรี คิวรี SQL แบบกําหนดเองสําหรับอ่านข้อมูล •โต๊ะ
•สอบถาม
•ขั้นตอนการจัดเก็บ
ไม่ /
ตาราง ตารางข้อมูลต้นทางของคุณ < ชื่อของตารางของคุณ> ไม่ schema
ตาราง
สอบถาม คิวรี SQL แบบกําหนดเองสําหรับอ่านข้อมูล < คิวรีของคุณ > ไม่ sqlReaderQuery
ชื่อขั้นตอนการจัดเก็บ คุณสมบัตินี้คือชื่อของกระบวนงานที่เก็บไว้ที่อ่านข้อมูลจากตารางต้นทาง คําสั่ง SQL สุดท้ายต้องเป็นคําสั่ง SELECT ใน Stored Procedure < ชื่อ Stored Procedure > ไม่ sqlReaderStoredProcedureName
พารามิเตอร์ Stored Procedure พารามิเตอร์เหล่านี้ใช้สําหรับขั้นตอนที่เก็บไว้ ค่าที่อนุญาตคือคู่ชื่อหรือค่า ชื่อและปลอกของพารามิเตอร์ต้องตรงกับชื่อและการกําหนดปลอกของพารามิเตอร์ Stored Procedure < คู่ชื่อหรือค่า > ไม่ storedProcedureParameters
หมดเวลาคิวรี การหมดเวลาสําหรับการดําเนินการคําสั่งคิวรี timespan
(ค่าเริ่มต้นคือ 120 นาที)
ไม่ queryTimeout
ระดับการแยก ระบุลักษณะการทํางานของการล็อคธุรกรรมสําหรับแหล่งข้อมูล SQL • ยอมรับการอ่าน
•อ่านไม่ได้ผูกมัด
•ทําซ้ําอ่าน
• Serializable
•ภาพถ่าย
ไม่ isolationLevel:
• ReadCommitted
• ReadUncommitted
•ทําซ้ําได้อ่าน
• Serializable
•ภาพถ่าย
ตัวเลือกพาร์ติชัน ตัวเลือกการแบ่งพาร์ติชันข้อมูลที่ใช้ในการโหลดข้อมูลจาก SQL Server • ไม่มี (ค่าเริ่มต้น)
• พาร์ติชันจริงของตาราง
•ช่วงไดนามิก
ไม่ partitionOption:
• ไม่มี (ค่าเริ่มต้น)
• PhysicalPartitionsOfTable
• DynamicRange
ชื่อคอลัมน์พาร์ติชัน ชื่อของคอลัมน์ต้นทางในจํานวนเต็มหรือชนิดวันที่/วันที่เวลา (int, , smallint, datebigint, smalldatetime, datetime, , datetime2หรือ datetimeoffset) ที่ใช้โดยช่วงการแบ่งพาร์ติชันสําหรับสําเนาคู่ขนาน ถ้าไม่ได้ระบุ ดัชนีหรือคีย์หลักของตารางจะถูกตรวจสอบโดยอัตโนมัติ และใช้เป็นคอลัมน์พาร์ติชัน ถ้าคุณใช้คิวรีเพื่อดึงข้อมูลต้นทาง แล้ว hook ?DfDynamicRangePartitionCondition ในคําสั่ง WHERE < ชื่อคอลัมน์พาร์ติชันของคุณ > ไม่ partitionColumnName
ขอบด้านบนของพาร์ติชัน ค่าสูงสุดของคอลัมน์พาร์ติชันสําหรับการแยกช่วงพาร์ติชัน ค่านี้ใช้เพื่อตัดสินใจว่าจะดําเนินการแบ่งพาร์ติชัน ไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในตารางหรือผลลัพธ์คิวรีจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมจะตรวจหาค่าโดยอัตโนมัติ < ขอบด้านบนของพาร์ติชันของคุณ > ไม่ partitionUpperBound
ขอบล่างของพาร์ติชัน ค่าต่ําสุดของคอลัมน์พาร์ติชันสําหรับการแยกช่วงพาร์ติชัน ค่านี้ใช้เพื่อตัดสินใจว่าจะดําเนินการแบ่งพาร์ติชัน ไม่ใช่สําหรับการกรองแถวในตาราง แถวทั้งหมดในตารางหรือผลลัพธ์คิวรีจะถูกแบ่งพาร์ติชันและคัดลอก ถ้าไม่ได้ระบุ คัดลอกกิจกรรมจะตรวจหาค่าโดยอัตโนมัติ < ผูกส่วนล่างของพาร์ติชันของคุณ > ไม่ partitionLowerBound
คอลัมน์เพิ่มเติม เพิ่มคอลัมน์ข้อมูลเพิ่มเติมเพื่อจัดเก็บเส้นทางสัมพัทธ์หรือค่าคงที่ของไฟล์ต้นฉบับ นิพจน์ได้รับการสนับสนุนสําหรับอย่างหลัง • ชื่อ
•ค่า
ไม่ additionalColumns:
•ชื่อ
•ค่า

ข้อมูลปลายทาง

ชื่อ รายละเอียด ค่า ต้องมี คุณสมบัติสคริปต์ JSON
ชนิดของที่เก็บข้อมูล ประเภทที่เก็บข้อมูลของคุณ ภายนอก ใช่ /
การเชื่อมต่อ การเชื่อมต่อของคุณไปยังที่เก็บข้อมูลปลายทาง < การเชื่อมต่อของคุณ > ใช่ การเชื่อมต่อ
ชนิดการเชื่อมต่อ ชนิดการเชื่อมต่อของคุณ เลือก SQL Server SQL Server ใช่ /
ตัวเลือกตาราง ระบุว่าจะสร้างตารางปลายทางโดยอัตโนมัติหรือไม่ ถ้าไม่มีตารางนั้นตามสคีมาต้นทาง • ใช้ที่มีอยู่
• สร้างตารางอัตโนมัติ
ไม่ tableOption:

• autoCreate
ตาราง ตารางข้อมูลปลายทางของคุณ <ชื่อของตารางของคุณ> ใช่ schema
ตาราง
ลักษณะการทํางานของการเขียน ลักษณะการทํางานการเขียนสําหรับการคัดลอกกิจกรรมเพื่อโหลดข้อมูลลงในฐานข้อมูล SQL Server •สอด
•Upsert
•ขั้นตอนการจัดเก็บ
ไม่ writeBehavior:
•สอด
•upsert
sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureTableTypeParameterName, storedProcedureParameters
ใช้ TempDB ไม่ว่าจะใช้ตารางชั่วคราวสากลหรือตารางทางกายภาพเป็นตารางชั่วคราวสําหรับ upsert เลือกแล้ว (ค่าเริ่มต้น) หรือยกเลิกการเลือก ไม่ useTempDB:
จริง (ค่าเริ่มต้น) หรือ เท็จ
เลือกเค้าร่าง DB ของผู้ใช้ เค้าร่างระหว่างกลางสําหรับการสร้างตารางระหว่างกาลถ้ามีการใช้ตารางจริง หมายเหตุ: ผู้ใช้จําเป็นต้องมีสิทธิ์ในการสร้างและลบตาราง ตามค่าเริ่มต้น ตารางระหว่างกลางจะแชร์สคีมาเดียวกันกับตารางปลายทาง นําไปใช้เมื่อคุณไม่เลือกใช้ TempDB เลือกแล้ว (ค่าเริ่มต้น) หรือยกเลิกการเลือก ไม่ interimSchemaName
คอลัมน์คีย์ ชื่อคอลัมน์สําหรับการระบุแถวที่ไม่ซ้ํากัน สามารถใช้คีย์เดี่ยวหรือชุดคีย์ได้อย่างใดอย่างหนึ่ง ถ้าไม่ได้ระบุ จะใช้คีย์หลัก < คอลัมน์คีย์ของคุณ> ไม่ คีย์
ชื่อขั้นตอนการจัดเก็บ ชื่อของกระบวนงานที่เก็บไว้ซึ่งกําหนดวิธีการใช้ข้อมูลต้นทางลงในตารางเป้าหมาย กระบวนการที่เก็บไว้นี้จะถูกเรียกใช้ต่อชุดงาน สําหรับการดําเนินการที่เรียกใช้เพียงครั้งเดียวและไม่เกี่ยวข้องกับข้อมูลต้นทาง ตัวอย่างเช่น ลบหรือตัดทอน ให้ใช้ คุณสมบัติ สคริปต์ ก่อนคัดลอก < ชื่อกระบวนงานที่เก็บไว้ของคุณ > ไม่ sqlWriterStoredProcedureName
ชนิดตาราง ชื่อชนิดตารางที่จะใช้ใน Stored Procedure กิจกรรมการคัดลอกจะทําให้ข้อมูลที่ถูกย้ายอยู่ในตารางชั่วคราวที่มีชนิดตารางนี้ จากนั้น โค้ด Stored Procedure สามารถผสานข้อมูลที่ถูกคัดลอกด้วยข้อมูลที่มีอยู่ได้ < ชื่อชนิดตารางของคุณ > ไม่ sqlWriterTableType
ชื่อพารามิเตอร์ชนิดตาราง ชื่อพารามิเตอร์ของชนิดตารางที่ระบุใน Stored Procedure < ชื่อพารามิเตอร์ของคุณสําหรับชนิดตาราง > ไม่ storedProcedureTableTypeParameterName
พารามิเตอร์ พารามิเตอร์สําหรับกระบวนงานที่เก็บไว้ ค่าที่อนุญาตคือคู่ชื่อและค่า ชื่อและปลอกของพารามิเตอร์ต้องตรงกับชื่อและการกําหนดปลอกของพารามิเตอร์ Stored Procedure < คู่ชื่อและค่า > ไม่ storedProcedureParameters
ล็อคตารางการแทรกจํานวนมาก ใช้การตั้งค่านี้เพื่อปรับปรุงประสิทธิภาพการคัดลอกในระหว่างการดําเนินการแทรกจํานวนมากในตารางที่ไม่มีดัชนีจากหลายไคลเอ็นต์ ใช่หรือไม่ (ค่าเริ่มต้น) ไม่ sqlWriterUseTableLock:
จริง หรือ เท็จ (ค่าเริ่มต้น)
สคริปต์สําเนาล่วงหน้า สคริปต์สําหรับการคัดลอกกิจกรรมเพื่อดําเนินการก่อนเขียนข้อมูลลงในตารางปลายทางในการเรียกใช้แต่ละครั้ง คุณสามารถใช้คุณสมบัตินี้เพื่อล้างข้อมูลที่โหลดไว้ล่วงหน้า < สคริปต์ก่อนคัดลอก >
(สตริง)
ไม่ preCopyScript
เขียนการหมดเวลาของชุดงาน เวลารอสําหรับชุดงานที่แทรกการดําเนินงานเพื่อเสร็จสิ้นก่อนที่จะหมดเวลา timespan
(ค่าเริ่มต้นคือ "02:00:00")
ไม่ writeBatchTimeout
เขียนขนาดของชุดงาน จํานวนแถวที่จะแทรกลงในตาราง SQL ต่อชุดงาน ตามค่าเริ่มต้น บริการจะกําหนดขนาดของชุดงานที่เหมาะสมแบบไดนามิกตามขนาดของแถว < จํานวนแถว >
(จํานวนเต็ม)
ไม่ writeBatchSize
การเชื่อมต่อพร้อมกันสูงสุด ขีดจํากัดสูงสุดของการเชื่อมต่อพร้อมกันที่สร้างขึ้นกับที่เก็บข้อมูลในระหว่างการเรียกใช้กิจกรรม ระบุค่าเมื่อคุณต้องการจํากัดการเชื่อมต่อที่เกิดขึ้นพร้อมกันเท่านั้น < ขีดจํากัดสูงสุดของการเชื่อมต่อพร้อมกัน >
(จํานวนเต็ม)
ไม่ maxConcurrentConnections