solo como comentario....
Debido a que el codigo de la cadena dinamica se ejecuta en otro contexto, SQL Server considera el insert into (tabla) execute como una transaccion distribuida, por lo que hay que tener habilitado en el server el Coordinador de Transacciones distribuidas.
Si ejecutamos el insert into dentro del codigo dinamico se evita la transaccion distribuida.
ej.
Código:
Declare @variable nvarchar(500)
Set @variable = 'Insert into #MiTabla Select MisCampos From OtraTabla'
execute SP_EXECUTESQL @select
Saludos!