Wir haben einen Server-Anmelde- und Datenbankbenutzer hinzugefügt, der eine Windows-Gruppe mithilfe des folgenden Skripts einer SQL 2008 R2-Instanz zuordnet, wobei die Namen aus Gründen der Anonymität geändert wurden:
USE master
go
CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS
WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english]
go
USE AppDb
go
CREATE USER [DOMAIN\AppUsers] FOR LOGIN
[DOMAIN\AppUsers]
go
EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers'
go
Wenn sich das Konto DOMAIN \ User1 bei der App anmeldet, fragt User1 Tabellen im dbo-Schema einwandfrei ab, da User1 Mitglied von DOMAIN \ AppUsers ist. Mit dieser App kann der Benutzer jedoch auch Tabellen erstellen. Wenn Sie diese Tabellen ohne Angabe eines Schemas erstellen , führt SQL Server die folgenden Schritte aus:
- Erstellt in AppDb einen Benutzer 'DOMAIN \ User1', der ein 'DOMAIN \ User1'-Login verwendet, das für die Instanz nicht in SSMS \ Security \ Logins aufgeführt ist.
- Erstellt ein 'DOMAIN \ User1'-Schema in AppDb.
- Erstellt diese Tabellen mit dem neuen Schema 'DOMAIN \ User1'.
Ich bin völlig verblüfft über diese Ergebnisse. Hier sind meine Fragen:
- Ich würde erwarten, dass die Tabellenerstellung fehlschlägt, anstatt zusätzliche Objekte zu erstellen. Kann mich jemand auf den Teil von Books Online verweisen, der dies erklärt?
- Warum erstellt der Server kein 'DOMAIN \ AppUsers'-Schema und fügt die neuen Tabellen zu diesem Schema hinzu, wenn Schemas hinzugefügt werden sollen?
- Wie verwendet die Datenbank ein Login, das nicht unter SSMS \ Security \ Logins angezeigt wird?
- Wenn Sie den Benutzer 'DOMAIN \ User1' in SSMS \ Databases \ AppDb \ Security \ Users betrachten, zeigt das Benutzersymbol einen kleinen roten Pfeil nach unten. Was bedeutet das?
Wir fangen gerade erst an, die Windows-Authentifizierung in einer Organisation zu verwenden, die der Einfachheit halber die SQL-Authentifizierung bevorzugt. Daher bin ich sicher, dass meine Frage darin besteht, die Unterschiede nicht zu kennen. Dieser Code wurde lange vor der Verwendung der Windows-Authentifizierung geschrieben. Ich bin daher sicher, dass wir unser Verständnis für das Erstellen neuer Schemas verbessern müssen, wenn Sie mit der Windows-Authentifizierung als einer andere als der Datenbankeigentümer angemeldet sind.
Falls Sie nicht sagen können, bin ich derjenige, der auf die Verwendung der Windows-Authentifizierung über die SQL-Authentifizierung drängt. Wenn wir dies nicht genau verstehen, kehren wir zur SQL-Authentifizierung zurück.