Acesso do MS SQL ao banco de dados restaurado sem a função sysadmin

4

Eu tenho bancos de dados de projetos diferentes em um servidor. Eu não posso dar a todos os desenvolvedores acesso administrativo ( sysadmin ) aos bancos de dados. Eles precisam ter as permissões necessárias para criar e restaurar bancos de dados. A função de servidor dbcreator funciona muito bem para isso. Em outras palavras, os usuários que restauram os backups têm dbcreator , mas não sysadmin .

Infelizmente, como a maioria dos backups restaurados não vem do mesmo servidor em que são restaurados, os usuários que restauram os backups perdem imediatamente o acesso ao banco de dados que acabaram de restaurar.

Como eles podem restaurar um banco de dados para que o usuário que restaurou o banco de dados do backup seja adicionado automaticamente à função de banco de dados dbowner ? Quais alterações são necessárias no SQL Server para tornar isso possível?

Atualização: tentei adicionar o gatilho em INSERT para [dbo].[restorehistory] , mas adicionar função usando sp_addrolemember requer que use [database] funcione e essa declaração é ilegal em um gatilho. Eu também li que os gatilhos em restorehistory não são acionados após a importação do banco de dados (como é uma tabela do sistema).

    
por Hubert Kario 13.04.2012 / 15:57

2 respostas

2

Você pode solucionar o problema por:

  • Crie uma pasta para hospedar o backup do SQL
  • Crie um script, como um PowerShell, para restaurar automaticamente um banco de dados quando encontrar um backup na pasta, aplicar segurança e, em seguida, movê-lo para uma pasta de arquivamento. Em seguida, envie um email quando for feito, por exemplo.
  • Crie uma tarefa agendada que seja executada a cada minuto.

Assim, os desenvolvedores só precisam colocar um arquivo de backup na pasta compartilhada para restaurá-lo, sem privilégios de dbcreator.

Se você estiver interessado, posso fornecer um exemplo de script powershell para restaurar o banco de dados (e alterar o caminho conforme necessário, por exemplo).

    
por 16.04.2012 / 15:50
0

Se as suas fontes forem bastante padronizadas, você poderia fazer um stored-proc que somente essa função possa executar, que leva o arquivo de restauração, o novo nome do banco de dados e o user-id como argumentos. Faça com que um SP restaure o banco de dados e faça a alteração de permissão.

Com essa configuração, provavelmente você pode deixar de dar aos usuários a função dbcreator e apenas executar o SP como sysadmin. Apenas conceda aos usuários privilegiados direitos ao SP (ou a uma função / esquema que inclua esse SP) e faça-o verificar a integridade e a integridade. suporte os argumentos.

Já que você já está usando o powershell, você tem a lógica para as restaurações descobertas. Basta mover a maior parte para SQL e ter o script powershell coletar os argumentos e, em seguida, chamar o SP.

    
por 17.04.2012 / 15:59