Avatar billede moller06 Nybegynder
14. september 2005 - 15:07 Der er 13 kommentarer

udtræk af én db fra en anden db

Hej. Jeg sidder lige og glor på min Enterprise Manager. Jeg har et problem.
Jeg skal via en lidt speciel applikation trække nogle data fra en database. (der ligger flere db'er på serveren).
Denne "specielle applikation" kan kun connecte til én db ad gangen, hvilket bliver fastsat lige fra starten (lad os kalde den db den connecter til for 'DB1'.
Problemet er at jeg skal samtidig bruge nogle data fra en anden db (navngivet 'db2') og det kan ikke lade sig gøre fordi jeg kun kan connecte til én db fra starten af.
Men... jeg har muligheden for at fyre et SQL-script af mod db1.

Det jeg så tænkte på var, om det var muligt at lave en procedure/view/anything i db1, som så havde en kopi af data'ene fra db2 og på den måde kunne jeg stadig tilgå data'ene fra db2 via min connection til db1.

Er dette forståeligt??


Uddybende spm.: kan man lave et view i db1 der henter data fra db2??
Avatar billede capaj Nybegynder
14. september 2005 - 15:12 #1
Hej moller,

du kan anvende: OpenDatasource:
eks:
SELECT  *
FROM      OPENDATASOURCE(
        'SQLOLEDB',
        'Data Source=ServerName;User ID=MyUID;Password=MyPass'
        ).Northwind.dbo.Categories

Eller du kan definere di server2 via linked server funktionalit.

/CAPAJ
Avatar billede capaj Nybegynder
14. september 2005 - 15:13 #2
der skulle selvfølgelig stå:
Eller du kan definere din server 2 via linked server funktionalit.
Avatar billede capaj Nybegynder
14. september 2005 - 15:15 #3
Nu er jeg i tvivl om du har 2 servere eller 2 Databaser?

Hvis det er 2 databaser (på samme server) skal du bare prefixe dine taballer explicit:
f.eks.:
DB1: Select * from DB1.dbo.TabelA

DB2: Select * from DB2.dbo.TabelB

/CAPAJ
Avatar billede capaj Nybegynder
14. september 2005 - 15:16 #4
use DB1
Create ViewA as
Select * from DB2.dbo.TabelB
Avatar billede moller06 Nybegynder
14. september 2005 - 15:23 #5
Det første du skriver lyder rigtig spændende og jeg er lige i gang med at teste, men den skide application tager kun en streng som parameter.

Jeg får en fejl om at ANSI_NULLS og ANSI_WARNINGS skal være 'set'. Jeg ved desværre ikke hvad det er.
Avatar billede moller06 Nybegynder
14. september 2005 - 15:24 #6
Jeg har én server og flere db'er på samme server.
Avatar billede capaj Nybegynder
14. september 2005 - 15:33 #7
Hvis samme server så er det denne:
use DB1
Create ViewA as
Select * from DB2.dbo.TabelB

du kan selvfølgelig støde i prb. med de rettigheder som de login giver dig! Bemærk at ".dbo" kan være et andet username (typisk virker .dbo dog)
Avatar billede capaj Nybegynder
14. september 2005 - 15:34 #8
DB2.dbo.TabelB
<DB navn>.<owner>.<TabelNavn>
Avatar billede moller06 Nybegynder
14. september 2005 - 15:41 #9
Det med at lave et view virker faktisk.
Men.... bliver det view opdateret hver gang jeg henter data fra det?? Fordi den originale tabel, hvorfra view'et er lavet - kan jo forandre sig??
Avatar billede capaj Nybegynder
14. september 2005 - 15:49 #10
Ja,

det ligger i naturen for et View. Der gemmes ikke data i et view..

/CAPAJ
Avatar billede moller06 Nybegynder
14. september 2005 - 15:53 #11
Ja det kom jeg også lige i tanke om.
Jeg er blevet lidt forvirret i løbet af dagen.

Lige så snart jeg har testet, så ligger der helt sikkert point til dig.
:)
Avatar billede capaj Nybegynder
14. september 2005 - 15:59 #12
no hurry
Avatar billede moller06 Nybegynder
16. september 2005 - 08:17 #13
Hej igen.
Jeg takker mange gange. Det er jo helt perfekt med et view ned på en anden db.

der er point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester