No MS SQL Server 2008 R2, preciso ter um usuário que possa criar, restaurar, DBCC CHECKDB e, em seguida, descartar bancos de dados. Mas ele não deve ser capaz de acessar ou excluir bancos de dados especificados no servidor (motivos de segurança). Esta configuração é possível?
sql-server
sql-server-2008
Cicik
fonte
fonte
Respostas:
Sim, é possível através de algumas permissões.
Primeiro - para criar um banco de dados - você precisaria conceder permissão ao nível do 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á atribuindo a função de servidor fixa do dbcreator ao logon, pois essa função de servidor fixa concede permissões de alteração / exclusão em qualquer banco de dados.Create Any Database
permite que o logon tenha esse poder apenas sobre os bancos de dados que eles possuem. Isso também dará a capacidade de restaurar.(Portanto, executando SOMENTE "Criar qualquer banco de dados" - você está criando a capacidade de criar um novo banco de dados, mas evitando a possibilidade de descartar ou alterar qualquer banco de dados obtido usando a função de servidor fixa dbcreator)
Para conceder essa permissão "Criar qualquer banco de dados" -
Para a capacidade de executar
DBCC CHECKDB
e eliminar 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 concede a este usuário a capacidade de selecionar, excluir, truncar, atualizar e inserirdb_owner
. Eu gosto de pensar nisso comosysadmin
dentro de um banco de dados.Você só aplicará essa permissão ao banco de dados em que pretende ter essa capacidade. Isso permitirá que você controle em quais bancos de dados o usuário pode soltar, restaurar ou verificar o banco de dados. Quaisquer bancos de dados nos quais você não concedeu ao usuário essas permissões estarão protegidos contra esse usuário, executando essas ações em
Para fazer isso, primeiro mapeie o logon para um usuário do banco de dados:
E adicione esse usuário à
db_owner
função (Funciona no SQL Server 2012 e diante):Para o SQL Server 2008, você precisaria 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 -> Segurables. 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 Associação para selecionar a associação da função.
O sistema de ajuda do SQL Server, Manuais 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 pesquisar pelo comando T-SQL ao qual você deseja conceder permissões e normalmente há uma seção Permissões para esse comando no artigo, informando quais permissões são necessárias para executar esta ação. Você pode consultar o artigo do DBCC CHECKDB para obter um exemplo - cerca de 7/8 do caminho é a seção de permissões.
fonte
ALTER ROLE [db_owner] ADD MEMBER [frank]
funciona apenas a partir do SQL Server 2012. Se você estiver em SQL Server 2008 deve-se ir com o SP:EXEC sp_addrolemember 'db_owner', 'frank';
(Ref aqui e aqui )