No MS SQL Server 2008 R2, preciso ter um usuário que possa criar, restaurar, DBCC CHECKDB e depois descartar bancos de dados. Mas ele não deve poder acessar ou excluir bancos de dados especificados no servidor (motivos de segurança). Essa configuração é possível?
relate perguntas
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Quanto "Padding" coloco em meus índices?
-
Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?
-
Como determinar se um Índice é necessário ou necessário
-
Downgrade do SQL Server 2008 para 2005
Sim, é possível através de algumas permissões.
Primeiro - para criar um banco de dados - Você precisaria conceder a permissão de nível de servidor
Create Any Database
. Essa permissão faz exatamente o que parece - o poder de criar um banco de dados. Observe que isso não está fornecendo a função de servidor fixa de dbcreator ao logon, pois essa função de servidor fixa fornece permissões de alteração/exclusão em qualquer banco de dados.Create Any Database
permite que o login tenha esse poder apenas sobre os bancos de dados que possui. Isso também dará a capacidade de restaurar.(Então, fazendo "Criar qualquer banco de dados" SOMENTE - você está dando a capacidade de criar um novo banco de dados, mas evitando a capacidade de descartar ou alterar QUALQUER banco de dados que você obteria usando a função de servidor fixa dbcreator)
Para conceder esta permissão "Criar qualquer banco de dados" -
Para a capacidade de executar
DBCC CHECKDB
e descartar bancos de dados - a função de banco de dados fixa db_owner é suficiente. Isso concede tudo o que você está solicitando. Observação: você também está concedendo a esse usuário a capacidade de selecionar, excluir, truncar, atualizar e inserir comdb_owner
. Eu gosto de pensar nisso comosysadmin
dentro de um banco de dados.Você só aplicará essa permissão ao banco de dados no qual pretende ter essa capacidade. Isso permitirá que você controle em quais bancos de dados o usuário pode descartar, restaurar ou fazer checkdb. Quaisquer bancos de dados para os quais você não concedeu essas permissões ao usuário estarão a salvo deste usuário realizar essas ações em
Para fazer isso, primeiro mapeie o login para um usuário do banco de dados:
E, em seguida, adicione esse usuário à
db_owner
função (Funciona no SQL Server 2012 e em diante):Para o SQL Server 2008, você teria que usar o procedimento armazenado do sistema para adicionar um membro da função como comentarista abaixo corretamente apontado:
Você também pode fazer tudo isso através da GUI. As informações de login que você faria através da pasta de segurança no SSMS no nível da instância: Clique com o botão direito do mouse no login -> Propriedades -> Securables. Para o nível do banco de dados, você faria isso através da pasta de segurança no nível do banco de dados: clique com o botão direito do mouse e selecione novo usuário -> escolha o login que deseja usar na sua lista de logins do servidor/dê um nome ao usuário do banco de dados -> vá para a guia de associação para selecionar a associação de função.
O sistema de ajuda do SQL Server, Books Online, também é um recurso fantástico para a maioria das perguntas sobre permissões - se você determinar que precisa atribuir outras permissões. Basta fazer uma pesquisa pelo comando T-SQL ao qual você deseja conceder permissões e normalmente há uma seção de permissões para esse comando no artigo informando quais permissões são necessárias para realizar essa ação. Você pode consultar o artigo para DBCC CHECKDB para obter um exemplo - cerca de 7/8 do artigo é a seção de permissões.