Welcome to Sign in | Help
in Search

link-servers on views

Last post 10-29-2011, 11:20 AM by Diana. 15 replies.
Page 1 of 2 (16 items)   1 2 Next >
Sort Posts: Previous Next
  •  02-02-2009, 6:37 PM 6663

    link-servers on views

    Salut,

     

    am o mica nelamuririe (pe sql server 2005):

    intr-un view daca am secventa : "select * from [link-server].[db].[dbo].[tabel]" nam nici o problema

    dar daca am un inner join cu niste conditii si trebuie sa folosesc link serverul ar trebui sa mearga? (eu zic ca da dar e ceva ce nu imi iese...?!?!?)

    Exista vre-o limitare de genul acesta?

    multumesc

     

     


    G.
  •  02-02-2009, 8:03 PM 6664 in reply to 6663

    Re: link-servers on views

    Poate că sunt prea curios din fire, dar se poate să ne spui şi nouă ce interogare apelezi şi care este mesajul de eroare generat de SQL Server ? Mulţumesc ! Tongue Tied
  •  02-02-2009, 8:38 PM 6665 in reply to 6664

    Re: link-servers on views

    Select-ul din view este:

    select db.dbo.tabel1.coloana, db.dbo.tabel1.coloana, db.dbo.tabel2.coloana

    from db.dbo.tabel1 inner join db.dbo.tabel2

    on db.dbo.tabel1.id=db.dbo.tabel2.id and db.dbo.tabel1.id2=db.dbo.tabel2.id2

    where conditii

    Eroarea este : "Msg 4104, Level 16, State 1, Line 2" The multi-part identifier "dbo...." could not be bound.

    secventa de mai sus o rulez pe o masina iar db-ul se afla pe alta masina: deci inainte de db mai trebui pus un link-server (un select chir pe l;ink server e ok dar la ceva de genu cum e mai sus: nu vrea)

     


    G.
  •  02-02-2009, 8:59 PM 6666 in reply to 6665

    Re: link-servers on views

    Incearca sa folosesti alias-uri pentru tabelele din query.
  •  02-02-2009, 9:06 PM 6667 in reply to 6666

    Re: link-servers on views

    am incercat in interogarea respectiva inainte de a posta si cu aliasuri
    G.
  •  02-02-2009, 9:30 PM 6669 in reply to 6665

    Re: link-servers on views

    neo:

    Eroarea este : "Msg 4104, Level 16, State 1, Line 2" The multi-part identifier "dbo...." could not be bound.


    FROM db..tabel1 inner join db..tabel2

    Verifică dacă toate câmpurile din interogarea SQL SELECT există sau/şi denumirea lor este scrisă corect.
  •  02-03-2009, 10:59 AM 6673 in reply to 6669

    Re: link-servers on views

    Problema poate proveni de la faptul ca prefixezi numele coloanelor cu [server].[baza_de_date].[schema]
    Poti face asa:
    SELECT a.Coloana1, B.Coloana1
    FROM server.BazaDeDate.Schema.Tabela1 A
    INNER JOIN server.BazaDeDate.Schema.Tabela2 B ON A.COLOANA_ID= B.COLOANA_ID
    Cătălin D.
  •  02-03-2009, 1:38 PM 6674 in reply to 6673

    Re: link-servers on views

    Va trebui sa stau sa ii dau de cap, dupa ce analizez si o rezolvov am sa postez si rezultatul.

     

    Multumesc.


    G.
  •  02-03-2009, 1:45 PM 6676 in reply to 6665

    Re: link-servers on views

    Sper ca este redundant sa explic ca un view local din doua tabele remote cu join intre ele este oarecum opusul la orice este corect, optim si functional. Fa join-ul remote si adu local rezultatul join-ului, fie prin openquery('...') fie printr-un link local la un view remote (declarat pe masina 'db' care face join-ul remote).

    http://rusanu.com
  •  02-03-2009, 1:50 PM 6677 in reply to 6676

    Re: link-servers on views

    Multumesc remus.

    Asta vroiam sa aud: o opinie vis-a-vis de view-ul in cauza.

    Deci sa inteleg ca 2 tabele remote joinate local intr-un view si prefixate de link server chiar nu sunt o varianta....(sau deloc).

    Multumesc ptr idee.


    G.
  •  02-03-2009, 2:49 PM 6678 in reply to 6677

    Re: link-servers on views

    Tabele remote intr-un join local risti sa creeze niste planuri suboptime, cum ar fi:
    1) aduce local tabele remote (copie in tempdb, eventual filtrata pe conditii ce se pot aplica) apoi face join-ul
    2) face un merge hash in memorie din transferul tabelelor remote (eventaul filtrate daca se poate)
    3) aduce o tabele local (filtrata eventual) si face nested loop *remote* pentru fiecare record

    Toate aceaste variante sint extrem de ineficiente, mai ales daca tabele sint mari. Nici una nu se compara cu executarea join-ului remote si apoi aducerea locala doar a rezultatului.

    Exista unele situatii, rare, cind SQL poate sa faca 'push' la join remote, dar esti la mila providerului din linked server si a planului ales de optimizator. Cel mai simplu este sa faci un OPENQUERY la un select care face el join-ul, sau sa creezi pe remote server un view si sa selectezi din view-ul remote (preferabil, daca potzi sa modifici serverul remote).

    http://rusanu.com
  •  02-03-2009, 9:28 PM 6684 in reply to 6678

    Re: link-servers on views

    Am inteles.

     

    remus cu o documentatie pentru replicari sub sql 2005 poti sa ma ajuti?

    Multumesc.


    G.
  •  02-05-2009, 9:28 AM 6702 in reply to 6684

    Re: link-servers on views

    Poate ca suna surprinzator, dar eu recomand InfoCenter-urile din MSDN:
    - developer: http://msdn.microsoft.com/en-us/library/ms151182(SQL.90).aspx
    - admin: http://msdn.microsoft.com/en-us/library/ms151314(SQL.90).aspx
    - arhitect: http://msdn.microsoft.com/en-us/library/ms151827(SQL.90).aspx

    Sint corecte, complecte si lizibile.

    http://rusanu.com
  •  02-05-2009, 9:48 AM 6703 in reply to 6702

    Re: link-servers on views

    Multumesc.
    G.
  •  10-26-2011, 8:37 PM 8982 in reply to 6703

    Re: link-servers on views

    am si eu o intrebare legata de select prin link server. De ce daca rulez selectul "select * from linked_server.master.dbo.syslogins", in profiler pe server prind rollback transaction? Se intampla asta la orice select care il fac, si primesc rezultatele selectului.

Page 1 of 2 (16 items)   1 2 Next >
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems