Зіставлення декількох входів на сервер одному користувачеві бази даних


11

Це здається дурним питанням, але, незважаючи на деякі дослідження, я не зміг знайти жодної інформації щодо цього (можливо, через неправильну термінологію).

Чи можливе реєстрація декількох входів на сервер (автентифікація сервера sql) одному користувачеві бази даних (який має дозволи, призначені членом ролі бази даних)?

У мене є десятки логін sql (автентифікація сервера sql), яким потрібно прочитати одне налаштування з центральної бази даних, і я краще скопіювати всі ці входи до одного користувача БД у цільовій базі даних, ніж створити власного користувача БД для кожного входу.

Якщо так, то який би був правильний синтаксис T-SQL?


Якщо ви говорите "вхід в сервер", ви маєте на увазі облікові записи Windows або облікові записи сервера SQL?
Філ Сумнер

Я говорю про облікові записи сервера SQL. Відредагуйте питання, щоб уточнити
leepfrog

Як щодо створення ROLEта, а потім додавання користувачів до ролі. Таким чином ви просто надаєте дозволи на роль. Це допоможе вам краще керувати безпекою. Також, яка версія сервера sql - 2008R2, 2012?
Кін Шах

Відповіді:


19

Спочатку переконайтесь у термінології. Логін - це принцип безпеки рівня екземпляра ( sys.server_principals), а Користувач - принцип безпеки на базі даних ( sys.database_principals). Їх з'єднує спільно SID (ідентифікатор безпеки). Якщо ви подивитесь на представлення системи вище, ви побачите, як вони з'єднуються у форматі SID у форматі 1: 1. Це 1 Вхід для 1 Користувача в базі даних. Логін може мати декількох користувачів, але вони повинні бути в різних базах даних.

Таким чином, вам потрібно буде створити користувача у вашій базі даних для кожного входу, до якого ви хочете мати доступ до нього. Це досить проста команда.

CREATE USER [UserName] FROM LOGIN [LoginName]

Звідти ви можете поставити всіх своїх користувачів в одну (або декілька) Роль. Роль - це контейнер, який має дозволи та ділиться цими дозволами з кожним Користувачем (для ролей бази даних) або Логіном (наприклад, ролями). Існує вбудована роль бази даних, яка називається, db_datareaderщо дає доступ для читання до кожної таблиці та перегляду в базі даних. Ви можете додати всіх своїх користувачів до цієї ролі. Однак кращою ідеєю було б створення нової ролі та додавання її до db_datareaderролі. Потім додайте всіх своїх користувачів до нової ролі. Перевага тут полягає в тому, що якщо ви хочете додати додаткові дозволи до групи, ви можете, просто змінивши дозволи на роль.

Створіть роль за допомогою:

CREATE ROLE RoleName

Додавання користувача до ролі (або однієї ролі до іншої)

EXEC sp_addrolemember 'RoleName','UserName'

або якщо ви перебуваєте у 2012 році чи вище

ALTER ROLE [RoleName] ADD MEMBER [UserName]

Дякую за детальне роз’яснення та за надану довідкову інформацію Кеннету, про що мені було незрозуміло That's 1 Login to 1 User in a database.
leepfrog
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.