none
Como pasar una tabla tipo variable a una base de datos en un servidor vinculado RRS feed

  • Pregunta

  • Buen día.

    Necesito su ayuda....resulta que tengo un stored procedure en una base de datos en un servido en el cual al ejecutarse manda a ejecutar oto stored procedure que se aloja en otra base de datos en un servidor vinculado al anterior.

    Lo que intento hacer es llenar una variable tipo tabla con un select y enviarla al servidor vinculado al mismo tiempo que se manda a ejecutar el sp, pero no logro hacerlo al ejecutar el sp me manda el siguiente error:

    Mens. 7213, Nivel 16, Estado 1, Línea 384
    The attempt by the provider to pass remote stored procedure parameters to remote server '10.10.101.132'  failed. Verify that the number of parameters, the order, and the values passed are correct.

    les dejo el código que utilizo:

    --declaramos una variable tipo tabla 
    DECLARE @SOCIOS_MMPR AS TABLE 
    ( MmPr_Frcs1  VARCHAR(10),
      MmPr_MmSt1  VARCHAR(50));
     -- FrCs_Email  VARCHAR (128));
      
    ----insertando datos en la variable tipo tabla @SOCIOS_MMPR
    INSERT INTO @SOCIOS_MMPR (MmPr_Frcs1, MmPr_MmSt1) --FrCs_Email)  
        (SELECT MmPr_Frcs, MmPr_MmSt --FrCs_Email
        FROM MMPR, FRCS WHERE FRCS_NAME = MMPR_FRCS 
        AND FRCS_ACTV = 1
        AND FrCs_Prgm = '1')
        --select * from @SOCIOS_MMPR
    
    --Actualozamos los estatus SocioOro de tipo numerico a tipo varchar  
    UPDATE @SOCIOS_MMPR SET
    MmPr_MmSt1 = 'CIT ORO'
    WHERE MmPr_MmSt1 = '11'
    
    --Actualozamos los estatus SocioExOro de tipo numerico a tipo varchar 
    UPDATE @SOCIOS_MMPR SET
    MmPr_MmSt1 = 'CITY' 
    WHERE MmPr_MmSt1 = '12'  
    
    SELECT * FROM @SOCIOS_MMPR
    
    EXEC [10.10.101.132].WHSR.dbo.UPS_PERSFREQ @SOCIOS_MMPR
    
    
    END
    
     EXEC DOWNGRADE2_GOLD

    y el código del sp en el servidor vinculado es el sig:

    ALTER PROCEDURE UPS_PERSFREQ
    
    @SOCIOS_CITY SOCIOS_MMPR READONLY
    AS
    BEGIN 
    
    SET NOCOUNT ON;  
    
    UPDATE PERS_FREQ SET freqtvl_code = (SELECT MmPr_MmSt FROM SOCIOS_MMPR, PERS_FREQ, PERSON WITH(NOLOCK) WHERE pfreqtvl_num = MmPr_Frcs AND pfreqtvl_num = Pers_id)
    
    IF (@@ROWCOUNT < (SELECT COUNT(MmPr_Frcs) FROM SOCIOS_MMPR ) )
    BEGIN
    	INSERT INTO LOG_PERS_FREQ (log_id, freqtvl_code, pfreqtvl_num, pfreqtvl_dateend, log_pers_Email)
    		(SELECT MmPr_MmSt, MmPr_Frcs, '' FROM SOCIOS_MMPR, PERS_FREQ
    		WHERE MmPr_Frcs NOT IN
    			(SELECT pfreqtvl_num FROM PERS_FREQ, SOCIOS_MMPR, PERSON WHERE pfreqtvl_num = MmPr_Frcs
    			AND pfreqtvl_num = Pers_id )
    		)
    END
        
    END  

    ya he intentado varias formas de hacerlo pero no lo logro.

    Muchas gracias por su ayuda.


    jueves, 25 de enero de 2018 23:58

Respuestas