Я создаю решение для непрерывной интеграции, включающее решения .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
, оно работает. Хммм.
Роли сервера являются общесерверными и применимы к каждой БД. Причина, по которой у вас возникают проблемы, заключается в том, что предоставленные вами роли не имеют правильных прав:
Когда ты говоришь
«Я выполняю образец задания, которое должно внести некоторые простые изменения в конкретную базу данных»
Я предполагаю, что это означает, что вы пытаетесь изменить существующую базу данных, ни одна из этих ролей не дает возможности открывать или вносить изменения в содержимое базы данных, фактически единственная роль, которая может быть ролью системного администратора.
Итак, у вас есть варианты: либо сделать эту группу членом группы системных администраторов (которая, вероятно, имеет больше прав, чем вы хотите предоставить), либо предоставить права на отдельные базы данных (вручную или с помощью сценария).
Следующая версия SQL Server позволит создавать определяемые пользователем роли сервера.