Назад | Перейти на главную страницу

Роли сервера MSSQL 2008 R2: имеют ли роли сервера неявные привилегии над * всеми базами данных *?

Я создаю решение для непрерывной интеграции, включающее решения .NET и базы данных MSSQL 2008.

Все мои серверы сборки входят в группу безопасности AD под названием Build Servers. Я создал DOMAIN\Build Servers объект в качестве входа в систему MSSQL и предоставил группе dbcreator и securityadmin роли сервера. Я не предоставил никаких конкретных ролей базы данных, потому что я понимаю, что эти роли сервера должны позволять любой учетной записи AD в этой группе создавать, изменять, удалять и базу данных или пользователя.

Я выполняю образец задания, которое должно внести некоторые простые изменения в конкретную базу данных. Однако я получаю следующую ошибку:

Detailed message Cannot open database "awesome-database" requested by the login. The login failed. 
Database.dbschema : Deploy error TSD01234: Login failed for user 'DOMAIN\BUILDSERVER01$'.

DOMAIN\BUILDSERVER01$ определенно находится в группе серверов сборки, поэтому он должен иметь возможность входить в систему и изменять любую базу данных.

Я пропустил что-то очевидное здесь, или мне нужно пойти и сопоставить этот логин с каждой существующей базой данных?

редактировать

Если я дам sysadmin, оно работает. Хммм.

Роли сервера являются общесерверными и применимы к каждой БД. Причина, по которой у вас возникают проблемы, заключается в том, что предоставленные вами роли не имеют правильных прав:

  • Администратор безопасности: может управлять безопасностью сервера.
  • DbCreator: может создавать, изменять, удалять и восстанавливать базы данных.

Когда ты говоришь

«Я выполняю образец задания, которое должно внести некоторые простые изменения в конкретную базу данных»

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

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

Следующая версия SQL Server позволит создавать определяемые пользователем роли сервера.