Aus dem Alltag: Probleme mit dem Zugriff auf eine SQL Datenbank


Beim Arbeiten mit mehreren Datenbanken und verschiednenen Ownern kann es geschehen, dass folgende Fehlermeldung auftritt:

The server principal „Domain\User“ is not able to access the database „abcDatabase“ under the current security context

Diese indiziert, dass das Cross-Database-Owner-Chaining auf der besagten Datenbank nicht eingeschaltet wurde.
Was ist Corss-Database-Owner-Chaining?
Jedes Objekt einer Datenbank hat per Default einen Owner. Wenn nun eine Referenz von einem Objekt auf ein Anderes gemacht wird, entsteht eine Owner-Chain. Wenn nun eine Applikation auf mehreren Datenbanken basiert, wobei Objekte aus DB1 auf Objekte aus DB2 referenzieren entsteht eine Cross-Database-Owner-Chain.
Cross-Database-Owner-Chaninig ist aber seit SQL 2000 SP3 per default ausgeschaltet, was die Sicherheit erhöht. Damit der Fehler behoben werden kann, muss auf der Datenbank, welche in der Fehlermeldung angezeigt wird, das Cross-Database-Owner-Chaining aktiviert werden. Dies geschieht mit dem Befehl sp_dboption.

  1. Öffnen Sie das SQL Management Studio
  2. Klicken Sie auf <New Query>
  3. Geben Sie das SQL Command <EXEC sp_dboption abcDatabase, ‚db chaining‘, ‚true‘> ein
  4. Klicken Sie auf <Execute>
  5. Es erscheint die Meldung „Command(s) completed successfully

Die Option ist nun gesetzt und erscheint in der Datenbank unter den Propertys der Datenbakn bei Options.

Hier der Link zur detaillierten Erklärung von Microsoft (Englisch): http://support.microsoft.com/kb/810474/en-us