DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
Selects auf verschiedene Datenbankserver

Oft genug stehen wir vor dem Problem, daß sich die gewünschten daten auf dem einen Server befinden und die anderen auf einen zweiten. Meist macht man sich dann Gedanken über die Importe der Daten; so daß man alle benötigten Daten nur noch auf einem Server hat. Außerdem ersinnt man schon Strategien über Replikatios- oder Synchronisationsmechanismen. An sich keine schlechte Idee... aber muss es denn gleich so ein Aufwand werden, wenn eine einzige Abfrage schon gereicht hätte?
 
Aber wie gehts? Nun, was wir brauchen ist ein unsere Abfrage und natürlich der Loginname und das Passwort fürden anderen Server. Nun hat man schon die halbe Miete. Die Verbindung auf den anderen Server funktioniert über eine Verbindunszeichenfolge
 
In diesem Beipiel Konnektiern wir uns mit einem zweiten SQL Server.
( 'SQLOLEDB', 'Data Source=dachstein;User ID=sa;Password=').
 
Sehen wir uns gleich mal das ganze SQL-Statement an:
 
use northwind
SELECT distinct northwind.dbo.customers.contactname,
             northwind.dbo.orders.orderid,  fs.customerid as fsid,
             northwind.dbo.customers.customerid
FROM
OpenDataSource( 'SQLOLEDB', 'Data Source=dachstein;User ID=sa;Password=').northwind.dbo.customers fs,
         orders, customers
where orders.customerid = fs.customerid

Über OpenDataSource können wir die Verbindungszeichenfolge für den zweiten Server angeben. Zur Vereinfachung des SQL Strings haber ich den Server Alias fs vergeben.

Achtung gilt es bei den Tabellen. Diese müssen natürlich eindeutig sein.. Ansonsten können  Sie wie gewohnt weiterarbeiten.

Nun wollen wir das ganze  mit Hilfe einer Stored Procedure dynamischer machen.

declare @sSQL varchar(8000)
declare @sServer varchar(50)
declare @sProvider varchar(50)
declare @sDatabase varchar(50)
declare @sTable varchar(50)

set @sServer = 'dachstein'
set @sProvider = 'SQLOLEDB'
set @sDatabase = 'northwind'
set @sTable = 'customers'

set @sSQL = 'select * from OpenDataSource( ''' + @sProvider +''', ''Data Source=' + @sServer + ';User ID=sa;Password='').' + @sDatabase + '.dbo.' + @sTable

exec(@sSQL)

So das wärs gewesen.

Viel Spaß!

Tipp:
Natürlich können Sie auch Verbindungen zu Access DB oder Excel Files herstellen.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine Links vorhanden

  Erfasst am: 28.01.2002
  Gültig bis: 27.02.2002
14 Ratings
Bewertung: 47,1%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG