Настройка базы данных SQL Server, которая видна только определенным пользователям - PullRequest
7 голосов
/ 26 января 2011

Я настраиваю ноутбук для интервью с разработчиками, готовыми к тестированию кода.Я хочу создать базу данных для каждого кандидата, но задолго до самого собеседования.Моя подготовка выглядит так:

  1. Войдите в систему как администратор.
  2. Создайте локального пользователя Windows для каждого кандидата.
  3. Создайте базу данных на локальном экземпляре SQL по умолчаниюсервер для каждого кандидата (с его именем в имени базы данных).

Так, что при входе в Windows в качестве каждого кандидата, если они открывают SSMS, они могут видеть только свою собственную базу данных в обозревателе объектов.

Я хочу сделать это таким образом, потому что между собеседованиями часто не хватает времени для резервного копирования / отключения базы данных предыдущего кандидата и создания базы данных следующего кандидата (машина работает медленно, поэтому выходит из системы/ снова и т. д. требует времени).

Возможно ли это, и если да, то как?

Заранее большое спасибо.

Ответы [ 4 ]

5 голосов
/ 26 января 2011

Похоже, в SQL Server 2005+ есть опция, которая может удовлетворить ваши потребности здесь.Звучит так, как если бы вы требовали, чтобы пользователь не видел других баз данных в обозревателе объектов.

Как скрыть базы данных в SQL Server выделяет VIEW ANY DATABASE разрешение.Это может быть полезно в этой ситуации, когда база данных X должна быть скрыта от всех пользователей, кроме пользователя Windows X.

Эта ветка форума MSDN (см. Самые нижние сообщения) предполагает, чтоВозможна комбинация отказа пользователю в просмотре базы данных и предоставления авторизации.

Я повторил это на компьютере с SQL Server 2008, но в этом быстром тесте использовал проверку подлинности SQL Server.Это работало так, как описано: все БД были скрыты от входа в систему, за исключением указанной ниже.

USE <customersdatabase>

ALTER AUTHORIZATION ON DATABASE::<customerdatabase> to <customerlogin>

USE MASTER

DENY VIEW ANY DATABASE TO <customerlogin>
1 голос
/ 26 января 2011

С SQL Server вы можете извлекать и присоединять базы данных.Таким образом, вы можете оставить его в системе как обычные и промежуточные кандидаты, просто отключить базу данных предыдущих кандидатов и прикрепить следующую..

0 голосов
/ 26 января 2011

Лично я бы сделал это немного по-другому - я бы не стал настраивать отдельную учетную запись Windows для каждого кандидата, вместо этого я бы использовал только одну учетную запись Windows и настроил SQL login для каждой.Отмените VIEW ANY DATABASE согласно ответу от p.campbell , а затем просто добавьте каждый логин SQL как пользователя в соответствующую базу данных.

Таким образом, вы можете войти в систему компьютера.по мере поступления каждого кандидата все, что ему нужно сделать, - это подключиться к экземпляру SQL, используя предоставленную вами информацию для входа в SQL.

0 голосов
/ 26 января 2011

Войдите в систему SSMS.

Щелкните по базам данных, щелкните по созданной вами базе данных.

Разверните систему безопасности, нажмите «Пользователи» и добавьте вход Windows в эту базу данных.Убедитесь, что вы не добавляете его на сервер как дыру.

Тогда ваши кандидаты могут войти в систему с помощью встроенной системы безопасности и видеть только свою базу данных, или, по крайней мере, они могут получить к ней доступ только.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...