Funções do servidor MSSQL 2008 R2: as funções do servidor têm privilégios implícitos sobre * todos os bancos de dados *?

5

Estou configurando uma solução de integração contínua envolvendo soluções .NET e bancos de dados MSSQL 2008.

Todos os meus servidores de compilação estão em um grupo de segurança do AD chamado Build Servers . Eu criei o objeto DOMAIN\Build Servers como um login do MSSQL e concedeu ao grupo as funções de servidor dbcreator e securityadmin . Eu não concedi nenhuma função de banco de dados específica, porque o meu entendimento é que essas funções de servidor devem permitir que qualquer conta do AD nesse grupo crie, altere, elimine o banco de dados ou o usuário.

Estou executando uma tarefa de amostra que deve aplicar algumas correções simples em um banco de dados específico. No entanto, estou recebendo o seguinte erro:

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$ está definitivamente no grupo Construir Servidores, portanto, deve ser capaz de efetuar login e alterar qualquer banco de dados.

Eu perdi algo óbvio aqui, ou tenho que mapear esse login para cada banco de dados existente?

Editar

Se eu conceder sysadmin , funcionará. Hmmm.

    
por growse 15.01.2012 / 18:05

1 resposta

5

As funções do servidor são de todo o servidor e se aplicam a todos os bancos de dados. O motivo pelo qual você está tendo problemas é porque as funções concedidas não têm os direitos corretos:

  • Admin de segurança: pode gerenciar a segurança do servidor.
  • DbCreator: pode criar, alterar, descartar e restaurar bancos de dados.

Quando você diz

"I'm running a sample job that should apply some simple amends to a particular database"

Suponho que isso significa que você está tentando alterar um banco de dados existente, nenhuma dessas funções fornece a capacidade de abrir ou fazer alterações no conteúdo de um Banco de Dados, na verdade, a única função que seria a função sysadmin.

Portanto, suas opções são fazer desse grupo um membro do grupo sysadmin (que provavelmente tem mais direitos do que você deseja dar) ou conceder direitos em bancos de dados individuais (manualmente ou com script).

A próxima versão do SQL Server permitirá a criação de funções de servidor definidas pelo usuário.

    
por 15.01.2012 / 20:28