18. maj 2009 - 21:19Der er
2 kommentarer og 1 løsning
ODBC connections fra MS SQL
HVis jeg i min MS SQL query vil tilgå en datakilde, skal den så være specificeret direkte på SQL serveren, eller kan det gå med den klient der udfører query'en? I begge tilfælde kunne jeg godt bruge et lille eksempel på syntaksen!
Du må være lidt mere specifik.... forsøger du at trække data fra flere databaser på samme sql server instans eller fra forskellige instanser / servere ?
hvis du blot vil joine data fra to databaser på samme instans er det meget simpelt;
fx select x,y,z from db1.dbo.tabel1 t1 inner join db2.dbo.tabel2 t2 on t1.x = t2.y
Hvis databaserne er på forskellig instanser (eller endda forskellige database typer) har du flere muligheder.
Kig i Books Online (som du enten bør have installeret sammen med din SQL Server eller tilgå direkte på Microsofts hjemmeside) og læs om OPENDATASOURCE() og OPENROWSET() eller endda OPENQUERY() og linked servers.
Bruger du linked servers er syntaksen nu blot
select x,y,z from db1.dbo.tabel1 t1 inner join link1.db2.dbo.tabel2 t2 on t1.x = t2.y
for at joine en tabel fra db1 med en tabel t2 i databasen db2 på serveren du har defineret som link1.
Bruger du OPENDATASOURCE er syntaksen
select x,y,z from db1.dbo.tabel1 t1 inner opendatasource(<provider>,<connect info>).dbo.tabel2 t2 on t1.x = t2.y
Under alle omstændigheder - tænk lige over sikkerheden når du implementerer en sådan løsning samt at du får en "stærk binding" mellem to systemer; Er den ene database nede eller hikker netværket er din app OGSÅ nede.
Et mere stabilt design ville være at pumpe data mellem de to databaser så du kun skal tilgå en database. Check evt. Integration Services i Books Online og/eller replikering. Men vær obs på at du nu er på vej ud i noget komplekst - og noget der kræver en vis viden efterfølgende for at vedligeholde!
Ok - tak for info - jeg vil studere det lidt nærmere. Det er en DB2 database jeg skal fange data fra, og som du skriver er det noget med at hente det og lægge det i en MSSQL tabel, og derefter behandle det!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.