Nous avons ajouté un utilisateur de connexion au serveur et de base de données qui mappe un groupe Windows à une instance SQL 2008 R2 à l'aide du script suivant, avec les noms modifiés pour l'anonymat:
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
Lorsque le compte DOMAIN \ User1 se connecte à l'application, User1 interroge les tables du schéma dbo très bien car User1 est membre de DOMAIN \ AppUsers, mais cette application permet également à l'utilisateur de créer des tables. Lors de la création de ces tables sans spécifier de schéma , SQL Server effectue les opérations suivantes:
- Crée un utilisateur «DOMAIN \ User1» dans AppDb qui utilise une connexion «DOMAIN \ User1» non répertoriée dans SSMS \ Security \ Logins pour l'instance.
- Crée un schéma «DOMAINE \ Utilisateur1» dans AppDb.
- Crée ces tables à l'aide du nouveau schéma 'DOMAIN \ User1'.
Je suis complètement déconcerté par ces résultats. Voici mes questions:
- Je m'attendrais à ce que la création de la table échoue plutôt que de créer des objets supplémentaires. Quelqu'un peut-il m'indiquer la partie de Books Online qui explique cela?
- Pourquoi le serveur ne crée-t-il pas un schéma «DOMAIN \ AppUsers» et n'ajoute-t-il pas les nouvelles tables à ce schéma s'il veut ajouter des schémas?
- De plus, comment la base de données utilise-t-elle une connexion non affichée dans SSMS \ Security \ Logins?
- En regardant l'utilisateur «DOMAIN \ User1» dans SSMS \ Databases \ AppDb \ Security \ Users, l'icône de l'utilisateur a une petite flèche rouge pointant vers le bas. Qu'est-ce que ça veut dire?
Nous commençons tout juste à utiliser l'authentification Windows au sein d'une organisation qui a préféré l'authentification SQL pour plus de simplicité, donc je suis sûr que ma question vient de l'ignorance des différences. Ce code a été écrit bien avant que nous envisagions d'utiliser l'authentification Windows, donc je suis sûr que nous devons améliorer notre compréhension de la création de nouveaux schémas lorsque vous vous connectez à l'aide de l'authentification Windows en tant que personne autre que le propriétaire de la base de données.
Dans le cas où vous ne pouvez pas le dire, je suis celui qui pousse à l'utilisation de l'authentification Windows sur l'authentification SQL. Si nous ne parvenons pas à une bonne compréhension de cela, nous reviendrons à l'authentification SQL.