none
Insert de SP en servidor vinculado RRS feed

  • Pregunta

  • Tengo un SP en el servidor A.

    En el servidor B tengo un vinculo del servidor A.

    Desde B ejecuto un SP y quisiera volcar el resultado del select de dicho SP a una tabla.

    Pero me da error por las transacciones distribuidas (las cuales estan habilitadas)

    No es posible hacerlo ?

    Atte.

    Cristian.


    DBA SQL Server Santiago/Chile

    miércoles, 17 de diciembre de 2014 14:36

Respuestas

  • Hola.

    No sabemos qué hace el procedimiento almacenado, con lo que lo mejor es que persistas el resultado del procedimiento del servidor A en una tabla en el servidor A y luego vuelques esa información al servidor B. De ese modo, lo que se realice internamente en el procedimiento no será relevante a efectos de transacciones en el servidor B.

    Lo que te está sucediendo es muy probable que guarde relación con operaciones de escritura que tienen lugar en el servidor A y con el MSDTC del servidor A y/o el servidor B, que es posible que no estén correctamente configurados. Desde el servidor B no puedes iniciar la transacción que se requiere para las operaciones en el servidor A.


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

    domingo, 28 de diciembre de 2014 11:52
    Moderador

Todas las respuestas

  •            Que tal amigo.. el error te da al hacer el insert o al hacer el select??

    BEMO-Paraguay

    miércoles, 17 de diciembre de 2014 15:03
  • Insert Into Tabla --Aca estoy en el servidor A
    exec [servidorvinculado].bd.dbo.sp_test --Ejecuto el Sp que esta en servidor B

    No es por separado obviamente, lo ejecuto todo junto.

    Saludos.




    DBA SQL Server Santiago/Chile

    miércoles, 17 de diciembre de 2014 15:19
  • ******* exec [servidorvinculado].bd.dbo.sp_test --Ejecuto el Sp que esta en servidor B

    Verificar:       

    1) Lo que te sugiero es probar primero  tu sp  del server B si te retorna datos en tu server A .

    2) Si es que te  retorna datos correctamente con la cantidad de columnas que corresponde a tu insert debería de funcionar.

    OBS: Favor vota si te es útil la información.
    Saludos 
    BEMO- Paraguay 
    https://tcsystems.wordpress.c


    • Editado Bader Molinas miércoles, 17 de diciembre de 2014 15:53
    miércoles, 17 de diciembre de 2014 15:52
  • Hola.

    El Sp retorna valores, varios regisros, 2 columnas.

    Ambas columnas son de tipo Int

    Entonces en el servidor A

    Create Table #Temp

    (

    c1 Int,

    c2 int

    )

    Insert Into #Temp

    Exec [ipvinculado].bd.dbo.Nombre_Sp

    OLE DB provider "SQLNCLI10" for linked server "IP" returned message "The partner transaction manager has disabled its support for remote/network transactions.".
    Mens. 7391, Nivel 16, Estado 2, Línea 1
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "IP" was unable to begin a distributed transaction.

    En el servidor vinculado:

    Acceso a Datos True

    RPC True

    Salida RPC True

    Atte.

    Cristian.


    DBA SQL Server Santiago/Chile

    miércoles, 17 de diciembre de 2014 16:16
  •         Podes probar viendo lo siguiente ...

    http://stackoverflow.com/questions/7473508/unable-to-begin-a-distributed-transaction

    http://support.microsoft.com/KB/329332

    OBS: Favor vota si te es útil la información.
    Saludos 
    BEMO- Paraguay 
    https://tcsystems.wordpress.com/

    miércoles, 17 de diciembre de 2014 16:33
  • Dices que ya los tienes habilitados tus transacciones distribuidas, de todos modos te dejo estos links para veas si algo te falto.

    Las transacciones distribuidas debe estar configurado en los dos servidores tanto del A y del B.

    Link: http://technet.microsoft.com/es-es/library/cc759136(WS.10).aspx. Un poco de teoría a que se refiere y que es lo que necesitas tener para configurarlo.

    Link: http://msdn.microsoft.com/en-us/library/dd327979.aspx Aquí te dice como lo habilitas y los permisos para el firewall para los dos servidores para que no lo tengas que desactivar.

    En la tabla de sys.configurations de sql server debe estar habilitado la opción queries distribuidos.

    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
    RECONFIGURE;
    GO
    EXEC sp_configure 'show advanced options', 0;
    RECONFIGURE;

    Si tienes dudas, dime y con todo gusto te puedo ayudar.

    Espero te ayude.

    Saludos.


    SQL Server, Power Builder

    miércoles, 17 de diciembre de 2014 16:38
  • No se que sucede, segui los pasos a pesar que ya lo tenia configurado y me sale el mismo error.

    Saludos.


    DBA SQL Server Santiago/Chile

    viernes, 19 de diciembre de 2014 14:41
  • Hola.

    No sabemos qué hace el procedimiento almacenado, con lo que lo mejor es que persistas el resultado del procedimiento del servidor A en una tabla en el servidor A y luego vuelques esa información al servidor B. De ese modo, lo que se realice internamente en el procedimiento no será relevante a efectos de transacciones en el servidor B.

    Lo que te está sucediendo es muy probable que guarde relación con operaciones de escritura que tienen lugar en el servidor A y con el MSDTC del servidor A y/o el servidor B, que es posible que no estén correctamente configurados. Desde el servidor B no puedes iniciar la transacción que se requiere para las operaciones en el servidor A.


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

    domingo, 28 de diciembre de 2014 11:52
    Moderador