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

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: MadMax
MadMax 13.12.2013 um 13:28:53 Uhr
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
Mitglied: ooAlbert
ooAlbert 16.12.2013 um 09:31:04 Uhr
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
Mitglied: MadMax
MadMax 17.12.2013 um 12:18:02 Uhr
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
Mitglied: ooAlbert
ooAlbert 17.12.2013 um 13:04:59 Uhr
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
Mitglied: MadMax
MadMax 18.12.2013 um 13:12:45 Uhr
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