ooalbert
Goto Top

SQL Server - Verbindungsserver verweigert den Zugriff

Hi,

ich hab einen SQL server 2008 R2 der mit einem Oracle Server verbunden ist mittels der Verbindungsserver-Funktion. Benutze ich einen SQL Account um mir vom SQL Server Inhalte aus Oracle anzeigen zu lassen klappt das sofort. Versuche ich das mit einem Domain Account gibts einen Fehler (Meldung 7302, Ebene 16, Status 1, ... Eine Instanz des OLE DB-Anbieters 'OraOLEDB.Oracle' für den Verbindungsserver 'oracle' kann nicht erstellt werden.).

Jetzt ist das offensichtlich ein Berechtigungsproblem und es gab im Netz auch einen Hinweis dazu:

GRANT EXECUTE ON sys.xp_prop_oledb_provider TO [AD\Name]

Das soll helfen. Bei mir wird das zwar erfolgreich ausgeführt hat nur keinen Effekt. Im Verbindungsserver selbst kann man ja auch etwas unter Sicherheit einstellen nur habe ich da auch keine funktionierende Kombination erzeugen können.

Hat da wer eine Idee zu wie das gehen soll?

Grüße

Content-Key: 224452

Url: https://administrator.de/contentid/224452

Printed on: April 23, 2024 at 16:04 o'clock

Member: MadMax
MadMax Dec 13, 2013 at 12:28:53 (UTC)
Goto Top
Hallo ooAlbert,

es wäre mal interessant, was Du unter Sicherheit alles ausprobiert hast und wie die Anmeldung an Oracle erfolgt. Außerdem würde ich den Benutzer mal testweise zum lokalen Admin und auch im SQL Server zum Admin befördern, um da Probleme auszuschließen.

Gruß, Mad Max
Member: ooAlbert
ooAlbert Dec 16, 2013 at 08:31:04 (UTC)
Goto Top
Hi,

hab den betroffenen Account entsprechedn zum Admin befördert und alle anderen möglichen Berechtigungen testweise mitgegeben aber es machte keinen Unterschied.

Mir ist auch die Mechanik nicht ganz klar wieso es mit einem SQL Account problemlos klappt.

Grüße
Member: MadMax
MadMax Dec 17, 2013 at 11:18:02 (UTC)
Goto Top
Hallo ooAlbert,

dann schreib doch mal, welche Einstellungen Du im Bereich "Sicherheit" beim Verbindungsserver hast und was Du da schon alles ausprobiert hast.

Wie meldet sich der Benutzer mit SQL Server Authentifizierung an Oracle an und wie soll sich der Windows-Benutzer an Oracle anmelden?

Gruß, Mad Max
Member: ooAlbert
ooAlbert Dec 17, 2013 at 12:04:59 (UTC)
Goto Top
Der SQL Account hat normal nur die "Public" Rolle um sich anzumelden und in der Datenbank ist er dann je nach dem "Owner/Reader/Writer". Der Verbindungsserver steht auf "Im folgenden Sicherheitskontext verwenden" und als Anmeldung der Oracle Datenbank Account. MAcht man dann einen Aufruf über den Verbindungsserver gibt es das gewünschte Ergebnis.

Habe ich nun einen Domain Account (normaler Nutzer) hat der auch nur die Berechtigungen wie der SQL Account und kann sich normal in der Datenbank bewegen, bekommt aber dann die oben beschreibene Fehlermeldung sobald der Verbindungsserver angesprochen wird.
Dann habe ich mal mit den Optionen probiert und oben drüber den Domain Account zusätzlich eingetragen und verschiedene Accounts als Remotebenutzer versucht (Oracle Account, Domain Admin,...) brachte aber alles nichts.

Prinzipiell soll eigentlich nichts weiter passieren als das eine Tabelle selektiert wird über den Verbindungsserver, die dann weiterverarbeitet wird. Als Zwischenlösung habe ich es jetzt so gemacht, die Tabelle in der Datenbank nachgebildet und lasse die jetzt via SQL Agent in bestimmten Zeitintervallen befüllen. das ist zwar nicht super galant aber so sind die Daten erstmal verfügbar face-smile

Grüße
Member: MadMax
MadMax Dec 18, 2013 at 12:12:45 (UTC)
Goto Top
Hört sich soweit alles korrekt an.

Dann wäre mein Verdacht, daß die verwendete DLL von diesem Benutzer nicht gefunden wird, weil sie möglicherweise nicht richtig registriert ist. Daß er sie verwenden darf hast Du ja sichergestellt, indem Du ihn zum Admin im Windows gemacht hast. Entweder registriert dieser Benutzer nochmal die DLL oder installiert den OLEDB-Provider nochmal, damit es auch sicher für ihn registriert ist.

Außerdem der übliche Tip, eine neuere/andere Version des Providers auszuprobieren, weil der jetzige vielleicht eine Macke hat.

Und ansonsten wäre ich mit meinem Latein dann am Ende.

Gruß, Mad Max