none
Funciones en servidores vinculados RRS feed

  • Pregunta

  • Saludos a todos, tengo algunas dudas y quisiera su apoyo por favor.

    Tengo un servidor vinculado y deseo ejecutar una función del mismo, como lo podria hacer.

    El servidor viculado se llama servidorPersonal y la función sería:

    servidorpersonal.personal.des1.ProcesosConsultaClave ('0918432618', '123456')

    Cual sería la sintaxis y los comandos para ejecutar esta función.

    De antemano muchas gracias por su ayuda.

    miércoles, 11 de mayo de 2011 16:40

Respuestas

Todas las respuestas

  • Hola.

    No puedes llamar a la función directamente desde servidor vinculado. Pero puedes crear un procedimiento almacenado que realice la misma operación y ejecutarlo, o incluso crear un procedimiento almacenado en el servidor remoto que llame a la función.

    Si esta opción no te es posible de llevar a cabo, indícanos el motivo y tratamos de encontrar una solución al respecto.

     


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 11 de mayo de 2011 16:54
    Moderador
  • El procedimiento almacenado lo creo en el servidor principal o en el viculado?

    Y otra cosa, como sería la llamada.

     

    Muchas gracias

     

    miércoles, 11 de mayo de 2011 17:08
  • Con el permiso de Alberto,

    No dices qué tipo de función es esa que necesitas ejecutar, pero suponiendo que sea una función de tabla (es decir, que devuelva un conjunto de resultados), podrías crear el procedimiento que hace referencia Alberto tanto en el servidor vinculado como en el local. En el primer caso encapsularía la llamada a la función que se encuentra en el mismo servidor, por lo que desde el servidor local habría que llamarle como

    EXEC nombreServidorRemoto.nombreBBDDRemoto.nombreEsquemaRemoto.nombreProcedimientoRemoto <parámetros>

    En caso de que quisieras crear el procedimiento almacenado en local llamando a la función del servidor vinculado, pues sería algo como

    EXEC nombreProcedimientoLocal <parámetros>

    y dentro de este último procedimiento, pues la llamada a la función tal y como lo ponías en tu primer post.

    En caso de que la función fuera escalar (esto es, devolviera un único valor), te recomiendo usar un parámetro de salida en el procedimiento almacenado para recoger dicho valor.

    jueves, 12 de mayo de 2011 8:01
  • Hola.

    Ojo, el procedimiento lo debes crear en el servidor en el que está la función (en el servidor vinculado) y referenciarlo con el nombre con cuatro partes. No puedes llamar a la función de forma remota, tampoco dentro de un procedimiento.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 12 de mayo de 2011 8:24
    Moderador
  • Bueno, en caso de que la función sea escalar es posible llamarla directamente con el nombre de cuatro partes como si fuera un procedimiento almacenado. Es decir, algo como

    EXEC @r = servidorVinculado.baseDatos.esquema.funcion 'valor parametro 1', ...

    jueves, 12 de mayo de 2011 8:59