効率をどのように測定していますか?どちらが速くなりますか?ターゲットで消費するリソースが少ないのはどれですか?ソースで?これらの行の列はいくつの行とどのようなデータ型ですか?リンクサーバーを介してTVFを実行できますか(ターゲットSQL 2008以降ですか?)。TVFからプルする場合、このデータの1:1移行をどのように保証しますか?
邪魔にならないこれらの質問で...
アップデート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でテンプレートを使用する方法については、この回答を参照できます。