Kurzanleitung Föderierung

<< Click to Display Table of Contents >>

Navigation:  SQL-Server Objekte >

Kurzanleitung Föderierung

Die Föderierung erfolgt über die OPENDATASOURCE-Anweisung.

 

Einstellen der Adhoc-Berechtigungen

Standardmäßig ist diese OPENDATASOURCE -Anweisung ausgeschaltet und muss manuell eingeschaltet werden.

 

Am schnellsten geht dies in der Management Console unter Programmenü Programm 🡪 Direkt SQL:

 

EXEC sp_configure 'show advanced options', 1

RECONFIGURE

 

EXEC sp_configure 'ad hoc distributed queries', 1

RECONFIGURE

 

Um diese Scripte ausführen zu können, müssen Sie mindestens eine der folgenden zwei Serverrollen haben: sysadmin und/oder serveradmin.

 

Zugriff auf andere Datenbanken

Eine detaillierte Syntax-Beschreibung für OPENDATASOURCE finden Sie hier:

http://msdn.microsoft.com/de-de/library/ms179856.aspx

 

Wichtig ist, dass ein entsprechender OLEDB-Provider auf dem SQL-Server-Rechner (nicht auf dem Client!) installiert ist. Achten Sie bitte darauf, in OPENDATASOURCE den richtigen Providernamen zu benutzen.

 

In der Management Console kann die OPENDATASOURCE in der Maske SQL-Sicht über einige vordefinierte Assistenten generiert werden.

 

Assistent für Oracle:

Beim Assistenten für Oracle wird von uns der Providername „MSDAORA“ vorgeschlagen. Auf dem SQL-Server-Rechner kann jedoch ein anderer Oracle-Provider bzw. auch gar kein Oracle-Provider installiert sein.

Bevor Sie einen Oracle-Provider installieren, versuchen Sie es zuerst mit einer Änderung von "MSDAORA" auf "MSDAORA.1" oder "OraOLEDB.Oracle"

 

Zugriffsoptimierung bei Föderierung

Einleitung

In rimacon omniSuite wird die Föderierung über eine SQL-Sicht realisiert. In der SQL-Sicht wird die Fremdtabelle angebunden, nach Bedarf einige Spalten angepasst und das Ergebnis zurückgeschickt. Dank der Ähnlichkeit zwischen SQL-Tabellen und SQL-Sichten kann rimacon omniSuite den SQL-Sichtnamen als üblichen Tabellenname benutzen und in diversen SQL-Befehlen kombinieren.

 

Problem

Das Hauptproblem bei der Logik liegt darin, dass immer die Gesamt-Menge eingelesen und erst danach nach weiteren Bedingungen reduziert wird. Bei der Zugriffsoptimierung besteht die Möglichkeit, einen parallelen SQL-Ausdruck zu definieren. (wird nicht als SQL-Sicht gespeichert) unter Berücksichtigung eines Filterszenarios (von vier vordefinierten Filterszenarien).

 

Filterszenarien

 

1. Alle Primärschlüssel

In diesem Fall wird nur die Primärschlüsselspalte ohne weitere Einschränkungen benötigt.

 

2. Eine Zeile nach Primärschlüssel-ID

In diesem Fall wird nur eine konkrete Zeile für eine konkrete Primärschlüssel-ID benötigt. Als Platzhalter für die konkrete ID wird die Variable $PKID genutzt.

 

3. Zeilen nach konkreter FK-ID (alle Spalten)

In diesem Fall werden Zeilen nach einem Fremdschlüssel gefiltert (z.B. alle Tickets eines Rechners). Da die rimacon omniSuite-Fremdschlüssel-ID und die entsprechende externe Spalte normalerweise unterschiedliche Arten von Inhalt haben (in rimacon omniSuite immer INT, in externer Spalte meistens eine Zeichenfolge), muss die Fremdschlüssel-ID über Konversion-SQL konvertiert werden.

Als Platzhalter für die konkrete ID wird die Variable $ObjID genutzt. Falls Konversion-SQL definiert wird, wird dies erst ausgeführt und das Ergebnis als Fremdschlüssel-ID ($ObjID) genutzt.

 

4. Zeilen nach konkreter FK-ID (nur Primärschlüssel)

 

Dieses Szenario ist fast identisch mit dem unter Punkt 3 beschriebenen Szenario, es wird aber nur die Primärschlüsselspalte benötigt.

 

Vollständiges Beispiel

 

Ausgangsituation:

 

Externe Tabelle: opendatasource(...).fed.dbo.InstalledSW:

InstalledSW_ID

Primärschlüssel

RechnerName

Rechnername als Text

SWName

Produktname

SWVersion

Produktversion

 

 

Ziel ist es, diese Tabelle mit einer rimacon-Rechnertabelle (HWM) als 0:n-Beziehung zu verknüpfen, wobei der Rechnername HWM_COMNAME entspricht.

 

SQL-Sicht:

Name=view_MSSQL2000_InstalledSW

Inhalt:

select InstalledSW_ID,RechnerName,SWName,SWVersion,HWM_ID

from opendatasource(...).fed.dbo.InstalledSW X

inner join HWM on HWM_MDT_ID=1 and HWM.HWM_COMPNAME=dbo.fnc_StringToString(X.RechnerName)

 

In Anbindungseigenschaften wird die "HWM_ID" als FK an die rimacon-Rechnertabelle angebunden.

 

1. Alle Primärschlüssel

(select InstalledSW_ID from opendatasource(...).fed.dbo.InstalledSW)

 

2. Eine Zeile nach Primärschlüssel-ID

 

(select InstalledSW_ID,RechnerName,SWName,SWVersion,HWM_ID

from opendatasource(...).fed.dbo.InstalledSW X

inner join HWM on HWM_MDT_ID=1 and HWM.HWM_COMPNAME=dbo.fnc_StringToString(X.RechnerName)

where X.InstalledSW_ID=$PKID)

 

3. Zeilen nach konkreter FK-ID (alle Spalten)

(select InstalledSW_ID,RechnerName,SWName,SWVersion,HWM_ID

from opendatasource(...).fed.dbo.InstalledSW X

inner join HWM on HWM_MDT_ID=1 and HWM.HWM_COMPNAME=dbo.fnc_StringToString(X.RechnerName)

where X.RechnerName='$ObjID')

 

SQL zur Umwandlung des Variableninhalts:

select HWM_COMPNAME from HWM where HWM_ID=$ObjID

 

4. Zeilen nach konkreter FK-ID (nur Primärschlüssel)

 

(select InstalledSW_ID from opendatasource(...).fed.dbo.InstalledSW X

where X.RechnerName='$ObjID')

 

SQL zur Umwandlung des Variableninhalts:

select HWM_COMPNAME from HWM where HWM_ID=$ObjID