Abbiamo aggiunto un utente di accesso al server e database che associa un gruppo Windows a un'istanza di SQL 2008 R2 utilizzando lo script seguente, con i nomi modificati per l'anonimato:
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
Quando l'account DOMAIN \ User1 accede all'app, User1 interroga correttamente le tabelle nello schema dbo perché User1 è un membro di DOMAIN \ AppUsers, ma questa app consente anche all'utente di creare tabelle. Quando si creano queste tabelle senza specificare uno schema , SQL Server effettua le seguenti operazioni:
- Crea un utente "DOMAIN \ User1" in AppDb che utilizza un accesso "DOMAIN \ User1" non elencato in SSMS \ Security \ Login per l'istanza.
- Crea uno schema 'DOMINIO \ Utente1' in AppDb.
- Crea quelle tabelle usando nel nuovo schema 'DOMAIN \ User1'.
Sono completamente sconcertato da questi risultati. Ecco le mie domande:
- Mi aspetto che la creazione della tabella fallisca piuttosto che creare oggetti aggiuntivi. Qualcuno può indicarmi la parte di Libri online che spiega questo?
- Perché il server non crea uno schema "DOMAIN \ AppUsers" e non aggiunge le nuove tabelle a quello schema se sta per aggiungere schemi?
- Inoltre, in che modo il database utilizza un accesso non mostrato in SSMS \ Security \ Login?
- Guardando l'utente "DOMINIO \ Utente1" in SSMS \ Database \ AppDb \ Sicurezza \ Utenti, l'icona utente ha una piccola freccia rossa rivolta verso il basso. Cosa significa?
Stiamo appena iniziando a utilizzare l'autenticazione di Windows all'interno di un'organizzazione che ha preferito l'autenticazione SQL per semplicità, quindi sono sicuro che la mia domanda viene dall'ignorare le differenze. Questo codice è stato scritto molto prima di considerare l'utilizzo dell'autenticazione di Windows, quindi sono sicuro che dobbiamo migliorare la nostra comprensione della creazione di nuovi schemi quando si accede utilizzando l'autenticazione di Windows come chiunque non sia il proprietario del database.
Nel caso in cui non si possa dire, sono io a spingere per l'uso dell'autenticazione di Windows su autenticazione SQL. Se non arriviamo a una solida comprensione di ciò, torneremo all'autenticazione SQL.