กําหนดค่า 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 ตามค่าเริ่มต้น บริการจะใช้ตารางชั่วคราวส่วนกลางเป็นตารางชั่วคราวและคุณสมบัตินี้จะถูกเลือก
เลือกเค้าร่าง DB ของผู้ใช้: เมื่อ ไม่ได้เลือก ใช้ 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 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 , date bigint , 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 |