Como você está medindo a eficiência? Qual será mais rápido? Qual deles consumirá menos recursos no destino? na fonte? Quantas linhas e que tipo de tipos de dados são as colunas nessas linhas? Tem certeza de que pode executar um TVF por meio de um servidor vinculado (o SQL 2008 de destino ou posterior?) ? Como você está assegurando uma migração 1: 1 desses dados, se estiver usando um TVF?
Com essas perguntas fora do caminho ...
Atualização 1
Parece que você está procurando ETL (Extract-Transform-Load). Eu recomendo o SSIS (SQL Server Integration Services) com o qual você pode extrair os dados da origem, aplicar as transformações necessárias e carregá-las no seu destino. Parece que seria um pacote bastante simples (dependendo das transformações).
O senso comum afirma que a abordagem do servidor vinculado será direcionada ao link, puxará os dados para o servidor local e aplicará qualquer lógica (filtros, junções etc.) no servidor local. Há alguma sobrecarga para buscar os dados no servidor vinculado, mas a maioria do processamento será tratada localmente.
O método OPENQUERY colocará o processamento no servidor remoto e os "resultados filtrados" serão recebidos pelo servidor local.
Parece que, mesmo se você pudesse executar um TVF através de um servidor vinculado, estaria recebendo o pior dos dois mundos, processando remotamente e localmente (supondo que você tivesse lógica adicional para aplicar no aparelho).
Dependendo de como você decide avançar, eu também consideraria OPENQUERY
um meio de importar / exportar dados em massa.
Tendo dito tudo isso ...
Se a origem e o destino no SQL Server (e o destino não são uma versão inferior), por que não fazer um backup e restauração dos dados? Isso seria uma verdadeira migração de dados. Aqui está um código para você.
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;
Você pode consultar esta resposta sobre como usar modelos no SSMS.