คุณวัดประสิทธิภาพอย่างไร อันไหนจะเร็วกว่ากัน? อันไหนจะกินทรัพยากรน้อยลงในเป้าหมาย? บนแหล่งที่มา? จำนวนแถวและประเภทข้อมูลประเภทใดที่มีคอลัมน์ในแถวเหล่านี้ คุณแน่ใจหรือไม่ว่าคุณสามารถใช้งาน TVF ผ่านเซิร์ฟเวอร์ที่เชื่อมโยง(เป็นเป้าหมายของ SQL 2008 หรือใหม่กว่า) ? คุณมั่นใจได้อย่างไรว่าการโยกย้ายข้อมูลนี้เป็นแบบ 1: 1 หากคุณดึงมาจาก TVF
ด้วยคำถามเหล่านั้นออกไป ...
อัปเดต 1
ดูเหมือนว่าคุณกำลังมองหา ETL (Extract-Transform-Load) ฉันขอแนะนำSSIS (SQL Server Integration Services)ซึ่งคุณสามารถดึงข้อมูลจากแหล่งข้อมูลใช้การแปลงที่คุณต้องการแล้วโหลดข้อมูลเหล่านั้นลงในเป้าหมายของคุณ ดูเหมือนว่ามันจะเป็นแพ็คเกจที่ค่อนข้างตรงไปตรงมา (ขึ้นอยู่กับการเปลี่ยนแปลง)
ภูมิปัญญาดั้งเดิมระบุว่าวิธีเซิร์ฟเวอร์ที่เชื่อมโยงจะออกไปที่ลิงค์ดึงข้อมูลไปยังเซิร์ฟเวอร์ภายในแล้วใช้ตรรกะใด ๆ (ตัวกรองเชื่อมต่อ ฯลฯ ) บนเซิร์ฟเวอร์ภายใน มีค่าใช้จ่ายในการดึงข้อมูลบนเซิร์ฟเวอร์ที่เชื่อมโยง แต่การประมวลผลส่วนใหญ่จะได้รับการจัดการในเครื่อง
วิธี OPENQUERY จะทำให้การประมวลผลบนเซิร์ฟเวอร์ระยะไกลและจะได้รับ "ผลการกรอง" โดยเซิร์ฟเวอร์ท้องถิ่น
ดูเหมือนว่าแม้ว่าคุณจะสามารถเรียกใช้ TVF ผ่านเซิร์ฟเวอร์ที่มีการเชื่อมโยงคุณจะได้รับผลที่เลวร้ายที่สุดของทั้งสองโลกประมวลผลจากระยะไกลและประมวลผลในพื้นที่
ขึ้นอยู่กับว่าคุณตัดสินใจจะก้าวไปข้างหน้าอย่างไรฉันก็จะมองOPENQUERY
ว่าเป็นวิธีหนึ่งในการนำเข้า / ส่งออกข้อมูลจำนวนมาก
ต้องบอกว่าทั้งหมดที่ ...
หากทั้งต้นทางและปลายทางที่ SQL Server (และเป้าหมายไม่ใช่รุ่นที่ต่ำกว่า) ทำไมไม่ทำการสำรองข้อมูลและกู้คืนข้อมูล นี่จะเป็นการย้ายข้อมูลที่แท้จริง นี่คือรหัสสำหรับคุณ
BACKUP DATABASE <DatabaseName, sysname, DatabaseName>
TO DISK=N'<backup_location, varchar, BackupLocation>.bak'
WITH INIT, FORMAT, COMPRESSION, COPY_ONLY
RESTORE DATABASE <NewDatabaseName, sysname, NewDatabaseName>
FROM DISK = N'<backup_location, varchar, BackupLocation>\
<DatabaseName, sysname, DatabaseName>.bak'
WITH
MOVE '<DataFileName, sysname, DataFileName>' TO '<DataMDFPath, nvarchar(600), DataMDFPath>',
MOVE '<LogFilePath, sysname, LogFilePath>' TO '<LogLDFPath, nvarchar(600), LogLDFPath>',
REPLACE;
คุณสามารถอ้างถึงคำตอบนี้เกี่ยวกับวิธีการใช้แม่แบบใน SSMS