Pergunta

Eu tenho um banco de dados SQL Server 2005 que eu estou tentando acessar como uma conta de usuário limitada, usando a autenticação do Windows. Eu tenho BUILTIN \ Users adicionado como um usuário de banco de dados (antes eu fiz isso, eu não conseguia nem abrir o banco de dados). Estou trabalhando sob a suposição de que todo mundo é suposto ter permissões para o papel "público" aplicada a eles, então eu não fiz nada com atribuição de função. Sob tblFoo, posso usar (página de permissões) as SSMS de diálogo Propriedades de adicionar "público", em seguida, definir as permissões explícitas. Entre elas está "Grant" para SELECT. Mas correr

SELECT * from tblFoo;

como um (BUILTIN \ Users) conta limitada me dá um erro "Select permissão negada no objeto 'tblFoo', banco de dados 'bar', esquema 'dbo'". Na caixa de diálogo Propriedades, há um "botão eficaz permissões, mas é acinzentado.

Além disso, eu tentei criar uma conta não-priv chamado "UserTest", acrescentando que no nível do servidor, em seguida, mapeá-lo para baixo para o "bar" banco de dados. Este deixe-me acrescentar UserTest aos "usuários ou funções" lista, que me deixar correr "Permissões efetivas" para a conta. Nenhuma permissão é listado em tudo - isso não parece certo. A conta deve ser em público, e subvenções públicas (entre outras coisas) Selecione em tblFoo, então por que não a conta UserTest mostrar uma permissão eficaz? Eu sinto que estou indo um pouco louco aqui.

LADO: Estou ciente de que muitas pessoas não gostam de usar o papel "público" para definir permissões. Este é apenas o meu tempo mexer; no projeto final que eu tenho certeza que vamos ter vários papéis flexível (personalizado) de banco de dados. Eu só estou tentando descobrir o comportamento que eu estou vendo, então por favor não "não faça isso!" respostas.

UPDATE: Aparentemente eu sei apenas o suficiente SQL Server para ser um perigo para mim e outros. Na definição de permissões (como eu disse, "entre outros"), tive negar o controle. Quando eu definir essa permissão, eu acho que eu tentei olhar para o que ele fez, tinha uma vaga idéia, e decidiu, em Negar. Eu não posso atualmente lembrar por que isso parecia a coisa a fazer, mas parece que essa era a razão pela qual eu estava ficando falhas de permissão. Então, eu estou atualizando a minha pergunta:? Alguém pode explicar a permissão "CONTROL", no que se refere às tabelas

Foi útil?

Solução

Você só precisa ter direitos SELECT. Em SQL puro (ver o "script" ícone / botão em sua caixa de diálogo), é GRANT SELECT ON dbo.tblFoo to public. Esta é a única permissão necessária para visualizar os dados,

Neste caso, a mensagem de erro menciona explicitamente "negar". "Negar" é um direito em si, por isso menciona,

Se você não tinham direitos, você receber a mensagem (muito aproximadamente) "não tblFoo não existe ou você não tem direitos"

"negar o controle" é mencionado aqui . Neste caso, você negado todas direitos para a função pública.

O bolseiro tem efetivamente todos permissões definidas no securable

Outras dicas

Assumindo que "UserTest" é uma conta de usuário de domínio, de conexão como um membro da função sysadmin e executar

EXEC MASTER.dbo.xp_logininfo 'Domain\UserTest', 'all'

(substituindo o seu nome de domínio para "Domínio")

isso irá exibir os grupos do Windows etc. que a conta está herdando permissões de segurança de e o nível de acesso, por exemplo, você esperaria ver algo como:

account name     type    privilege  mapped  login name       permission path
domain\usertest  user   user               domain\usertest  BUILTIN\Users

Esta vontade ajudar a solucionar onde a conta está herdando permissões de, por exemplo, que grupos do Windows é parte do que tem permissões para o banco de dados. Se isso todos os olhares OK, então eu iria seguir o seu próprio conselho e não mexer com o papel público.

  • Criar uma função de banco de dados em sua banco de dados
  • permissões explícitas
  • Atribuir para que papel
  • Crie um login do servidor para o usuário conta
  • Abra o login do servidor, vá para o seção de mapeamento de usuário, clique no banco de dados e selecione o banco de dados papel que você criou
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top