La solución para llamar la función con valores de tabla de forma remota en SQL Server tiene aún más problemas

Tuve una consulta con un conjunto de parámetros que debían ejecutarse varias veces con diferentes parámetros, así que la envolví en una función con valores de tabla.

Esa función de valor de tabla necesitaba llamarse desde un servidor remoto. Desafortunadamente, la llamada falla en el servidor vinculado con el error:

Msg 4122, Level 16, State 1, Line 29
Remote table-valued function calls are not allowed.

Microsoft ha reconocido que "llamar a una función con valores de tabla de forma remota" era una característica que no se tenía en SQL Server 2008. Ver:http://connect.microsoft.com/SQLServer/feedback/details/276758/remote-table-valued-function-calls-are-not-allowed

Descubrí una solución alternativa utilizando la sintaxis de OPENQUERY, que permite que la consulta se ejecute localmente en el servidor remoto y luego devuelva el conjunto de resultados. Ver:http://social.msdn.microsoft.com/Forums/en/transactsql/thread/7a6e4aa1-630b-4ad5-aee5-15139987adbd

Desafortunadamente, esta solución necesitaba una solución, ya que requiere una cadena como argumento, lo que significa que no puede pasar una variable usando la sintaxis OPENQUERY y ni siquiera puede concatenar una cadena, como si desea incluir variables que desea pasar a la función de valores de tabla remota. La solución para la solución es construir explícitamente la consulta OPENQUERY con SQL dinámico, asegurando que se le pase una cadena normal. Ver:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/0847ad24-0dfe-4ae1-9788-5516c7830f40/

Aún así, otro problema resulta de esto. Incluso después de asegurarse de que todas las citas, las comillas dobles y las citas cuádruples estén correctamente incrustadas para que todo se pueda pasar a través de exec sp_executesql, todavía hay un problema:

Cuando la consulta finalmente llama a la función con valores de tabla, aparece el error:

OLE DB provider "SQLNCLI10" for linked server "MY_REMOTE_SERVER_NAME" returned message "Deferred prepare could not be completed.".
Msg 7416, Level 16, State 1, Procedure MyTableValuedFunctionName, Line 22
Access to the remote server is denied because no login-mapping exists.

No estoy seguro de por qué recibo este error, porque existe una asignación para mi nombre de usuario y, si simplemente reemplazo la función con valores de tabla por una tabla real, los resultados son correctos. El problema ocurre con la instrucción OPENQUERY, independientemente de si se ejecuta con sp_executesql o no, y como dije, solo ocurre cuando se llama a una función con valores de tabla.

¿Alguna idea de como resolver esto?