Welcome to Sign in | Help

Interograre intre servere

  •  03-19-2009, 2:22 PM

    Interograre intre servere

    Am 2 servere SQL 2005 care sunt linked intre ele. Mai am urmatoarele tabele pentru exemplificare
    - Server1.dbo.Stocuri cu campurile: ProductID, Qty - tabela unde este tinut stocul in paleti
    - Server2.dbo.Paleti cu campurile PalletID, ProductID, BestBefore - tabela unde am informatii despre paletii aflati in stoc.

    Am nevoie de un rezultat de genul:
    ProductID, Qty, min(BestBefore)
    Unde ProductID vine din detaliile unei facturi. De exemplu factura1 are pe ea Product1, Product3, Product5, deci rezultatul final imi va arata ceva de genul:
    Product1   19   01.10.2009
    Product3   95   01.12.2009
    Product5   22   11.09.2009

    Interogarea va rula pe Server1. Va cer parerea sa ma lamuriti care ar fi cea mai buna modaliatate de a avea rezultatul dorit. Dupa cum vad eu treaba am mai multe posibilitati:
    1) - pe Server 1 am un query (aproximativ) de genul:

    Select ProductID, Qty, min(BestBefore)
    From stocuri inner join Server2.dbo.palleti on productID=productID
    Where ProductID in sau Exitst ....
    Group by ProductID, Qty

    Nu stiu aceasta metoda cat de multe transfer face intre cele 2 servere. Datele de pe server2 sunt aduse pe server1 si apoi facut joinul ?

    2) - pe Server 1 am un query

    Select ProductID, Qty, Server2.dbo.GetMyBestBefore(productID)
    From stocuri
    Where ProductID in sau Exitst ....

    unde GetMyBestBefore(productID) este o functie scalara care imi returneaza best beforeul. Dar asta inseamna ca pentru fiecare linie de pe comanda imi cauta in tabela Paleti


    3) - pe server 1 creez un string cu productID de pe comanda adica (Product1, Product3, Product5) pe care
    il transmit ca si parametru unei functii tabelare. In functia tabelara am grija ca doar pentru id-urile din parametru
    sa caut best beforeul.
    Queryul ar arata in genul:

    Select ProductID, Qty,  t.BestBefore
    From Stocuri inner join Server2.dbo.GetmyBestBefores('Product1, Product3, Product5')
    Where ProductID in sau Exitst ....


    M-ar interesa care modalitate consuma mai putine resurse si e mai rapida. Va multumesc.

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems