Das Standardschema von SQL Server 2008 wird nicht eingehalten?

9

Wir haben gerade eine SQL 2008-Datenbank zu Testzwecken auf einen anderen Server kopiert. Der typische Benutzer, der sich anmeldet, verwendet einige Objekte in einem bestimmten Schema. Angenommen, es ist Benutzer foound Schema bar.

fooDas Standardschema befindet sich barsowohl auf Instanz- als auch auf Datenbankebene. Wenn Sie sich fooanmelden, können Sie jedoch keine Objekte im barSchema finden, ohne einen vollständig qualifizierten Namen zu verwenden.

Warum funktioniert das Standardschema hier nicht?

John Cromartie
quelle

Antworten:

13

Hat foo Benutzer sysadmin Rechte auf SQL Server? Wenn dies der Fall ist, wird jedem Systemadministrator standardmäßig das Schema dbo zugewiesen , unabhängig davon, was in den Eigenschaften des Benutzers für eine bestimmte Datenbank festgelegt ist.

Um ein Standardschema zu haben, muss ein Benutzer Datenbankrollen wie db_owner, db_datawriter usw. anstelle der Serverrolle sysadmin haben.

Sag mir, ob es nicht dein Fall ist.

yrushka
quelle
1
Du bist ein Gott und ich verneige mich vor deinem Wissen. Ich war verwirrt, bis ich darauf stieß!
Jens
1

Ein weiteres Szenario, in dem dieses Problem auftreten kann (SQL 2008 R2) ...

Ich hatte einen Benutzer mit einem SQL-Authentifizierungs-Login verknüpft, den ich mit einem vorhandenen Schema verknüpfen wollte. Die Anmeldung hatte keine Systemadministratorrechte , daher hat die oben genannte Lösung nicht geholfen.

Ich fand schließlich heraus, dass die Datenbank immer noch im SQL 2000-Kompatibilitätsmodus konfiguriert war. Durch den Wechsel zu SQL 2005 wurde das Problem behoben.

Desillusioniert
quelle
Seltsamerweise habe ich anscheinend dieses Problem (Benutzer, der mit einem SQL-Authentifizierungs-Login verknüpft ist, den ich mit einem vorhandenen Schema verknüpfen wollte), außer dass meine Kompatibilitätsstufe "SQL Server 2016 (130)" ist
tbone
0

Es wird davon ausgegangen, dass das Standardschema auf dem neuen Server dbo ist. Wenn das Schema nicht mit der Datenbank kopiert wurde.

Nicht die Lösung, aber vielleicht könnte dies helfen, wenn Sie sich den msdn-Artikel ansehen. http://msdn.microsoft.com/en-us/library/dd283095.aspx

Nick O'Neil
quelle
Wir haben das Standardschema für fooauf dem neuen Server konfiguriert . Es wird sowohl auf Instanzbenutzer- als auch barauf Datenbankbenutzerebene festgelegt.
John Cromartie