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.