Ми додали користувача для входу в сервер та бази даних, який відображає групу Windows на екземпляр SQL 2008 R2, використовуючи наступний сценарій, імена змінені на анонімність:
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
Коли обліковий запис DOMAIN \ User1 входить у додаток, User1 запитує таблиці в схемі dbo просто добре, оскільки User1 є членом DOMAIN \ AppUsers, але ця програма дозволяє користувачеві створювати і таблиці. Створюючи ці таблиці без вказівки схеми , SQL Server виконує такі дії:
- Створює користувача "DOMAIN \ User1" в AppDb, який використовує вхід "DOMAIN \ User1", який не зазначений у SSMS \ Security \ Logins для цього примірника.
- Створює схему 'DOMAIN \ User1' в AppDb.
- Створює ці таблиці за допомогою нової схеми 'DOMAIN \ User1'.
Я цілком збентежений цими результатами. Ось мої запитання:
- Я б очікував, що створення таблиці не вдасться, а не створить додаткові об'єкти. Чи може хтось вказати мені на частину Книг Інтернет, яка пояснює це?
- Чому сервер не створює схему "DOMAIN \ AppUsers" і не додає нові таблиці до цієї схеми, якщо він збирається додавати схеми?
- Крім того, як база даних використовує логін, не показаний у SSMS \ Security \ Logins?
- Дивлячись на користувача "DOMAIN \ User1" у SSMS \ Бази даних \ AppDb \ Безпека \ Користувачі, піктограма користувача має маленьку червону стрілку, спрямовану вниз. Що це означає?
Ми тільки починаємо використовувати автентифікацію Windows в організації, яка віддала перевагу автентифікації SQL для простоти, тому я впевнена, що моє питання виникає через незнання відмінностей. Цей код був написаний задовго до того, як ми розглядали питання використання автентифікації Windows, тому я впевнений, що нам потрібно вдосконалити наше розуміння створення нових схем під час входу в систему за допомогою автентифікації Windows як ніхто інший, ніж власник бази даних.
У випадку, якщо ви не можете сказати, я підштовхую до використання автентифікації Windows через автентифікацію SQL. Якщо ми не зрозуміємо це, ми повернемось до автентифікації SQL.