Verimliliği nasıl ölçüyorsunuz? Hangisi daha hızlı olacak? Hangisi hedefte daha az kaynak tüketir? kaynağında? Bu satırlardaki sütunlar kaç satır ve ne tür veri tipleridir? Eğer bağlantılı bir sunucu üzerinden bir TVF yürütebileceği eminiz (hedef SQL 2008 veya sonrası mi?) ? Bir TVF'den çekiyorsanız, bu verilerin 1: 1 oranında taşınmasını nasıl sağlıyorsunuz?
Bu sorular yoldan çıkınca ...
Güncelleme 1
ETL (Extract-Transform-Load) aradığınızı gibi geliyor. Verileri kaynaktan çekebileceğiniz, ihtiyaç duyduğunuz dönüştürmeleri uygulayabileceğiniz ve daha sonra bunları hedefinize yükleyebileceğiniz SSIS (SQL Server Entegrasyon Servisleri) 'yi öneririm . Bu (dönüşümlere bağlı olarak) oldukça basit bir paket olacak gibi geliyor.
Geleneksel bilgelik, bağlantılı sunucu yaklaşımının bağlantıya gideceğini, verileri yerel sunucuya çekeceğini ve ardından yerel sunucuya herhangi bir mantık (filtreler, birleştirmeler vb.) Uygulayacağını belirtir. Bağlantılı sunucudaki verileri almak için ek yükler vardır, ancak işlemlerin çoğu yerel olarak ele alınacaktır.
AÇMA yöntemi, uzak sunucuya işlemi koyacaktır ve "filtrelenmiş sonuçlar" yerel sunucu tarafından alınacaktır.
Bir TVF'yi bağlı bir sunucu üzerinden yürütebilseniz bile, her iki dünyanın da en kötüsünü, uzaktan işlemeyi ve yerel olarak işlemeyi (sete uygulamak için ek bir mantık olduğunu varsayarak) elde edersiniz.
İlerlemeye nasıl karar verdiğinize bağlı olarak, OPENQUERY
veri alma / verme işleminin bir aracı olarak da göz önünde bulundururum .
Hepsini söyledikten sonra ...
Hem kaynak hem de hedef SQL Server'da ise (ve hedef daha düşük sürüm değilse), neden verileri yedeklemiyor ve geri yüklemiyorsunuz? Bu gerçek bir veri göçü olacaktır. İşte size bazı kodlar.
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;
Şablonların SSMS’de nasıl kullanılacağı hakkındaki bu cevaba başvurabilirsiniz .