none
SQL 2005 - Permissionamento e visualização de Databaes RRS feed

  • Pergunta

  •  

    Pessoal,

    No SQL Server 2000 eu não conseguia cadastrar um usuário que tivesse acesso a uma base e quando ele logasse ele só pudesse visualizar a base dele pelo Enterprise Manager.

    Exemplo:

    Tenho 3 DataBases : Base_1, Base_2, Base_3

    Tenho 3 Usuários permissionados para suas respectivas bases:

    USer_1: Acessa Base_1 e Base_3

    User_2: Acessa somente a base_2

    No SQL Server 2005 já tem como ao logar o usuário 1 ele visualize as bases 1 e base 3 e ao logar o user_2 ele só visualize a base_2?

    Aguardo retorno

    quarta-feira, 7 de fevereiro de 2007 12:38

Respostas

Todas as Respostas

  • ele vai enchergar como no sql 2000 mais nao vai ter acesso.

     

    Abs;

    quarta-feira, 7 de fevereiro de 2007 17:10
  • Alan,

    Funciona da mesma forma que o SQL Server 2000.

     

    Marcelo, se eu não estiver enganado, dentro do Enterprise Manager existe alguma propriedade que podemos limitar a exibição dos bancos.

    quinta-feira, 8 de fevereiro de 2007 09:57
    Moderador
  • nao e propriedade e perciso editar uma proc de sistema para isso, mais acho meio arriscado, se eu precisasse muito faria mais caso contrario deixaria como e mesmo.

     

    Abs;

    quinta-feira, 8 de fevereiro de 2007 12:41
  • Marcelo e Júnior

    Tenho a liberdade de testar isso em um novo servidor de banco de dados que irá nascer aqui...

    Talvez seja uma boa possibilidade de resolvermos este problema

    Se você me disser qual a procedure de sistema eu mexo aqui... e se der problema eu formato o servidor e pronto

    Valeu!!

    quinta-feira, 8 de fevereiro de 2007 13:50
  •  

     Bom para comecar vc. deve colocar um profile e logar tudo o que o sql server faz para mostrar os bancos a proc para alterar e essa :

     

     sp_MSdbuseraccess

     vc. deve mudar o codigo dessa proc neste ponto:

     

     select @accessbit = has_dbaccess(@dbname)
         If @dbname
                if ( @accessbit <> 1) begin
                   exec (N'insert #TmpDbUserProfile values (' + @dbidstr + N', ' + @invalidlogin + N')')
                   end
                else begin
                   /* Yes, current user does have access to this database, we are not trying to get priv at this point */
                   select @dbbits = 0x03ff
                   select @dbbitstr = ltrim(convert(nvarchar(12), @dbbits))
                   exec (N'insert #TmpDbUserProfile values (' + @dbidstr + N', ' + @dbbitstr + N')')
                   end
                end

     

    passar o usuario via user_name() e colocar um 0 nesta variavel bit assim ele nao inclui na lista da tbl temporaria

    TmpDbUserProfile 

    Abs. qualquer coisa retorne.

    quinta-feira, 8 de fevereiro de 2007 16:05
  • Marcelo,

    Antes de mais nada obrigado pelo força.

    Entendi perfeitamente oque precisa ser feito, o servidor estará liberado para mim a partir de amanhã. Vou instalar o SQL Server atualizar tudo e provavelmente vou começar a mexe com isso na segunda-feira.

    Te manterei informado sobre os avanços... vamos resolver este problema de uma vez!

    Até mais

    quinta-feira, 8 de fevereiro de 2007 16:59
  • qualquer coisa retorne.

     

    Abs;

    quinta-feira, 8 de fevereiro de 2007 17:11
  • Pessoal,

    A MS disponibiliza uma nova versão desta procedure que resolve este problema. É só atualizar a proc e pronto !!

    http://support.microsoft.com/kb/889696/en-us

    OBS: Para o SQL Server 2005 a checagem de permissão é diferente e ainda não tem uma solução !!

    Um abraço
    Nilton Pinheiro
    www.mcdbabrasil.com.br

    Ps: Foi útil para vc? Então marque o psot como útil!

    sexta-feira, 9 de fevereiro de 2007 00:48
  • Alan,

    O importante é colocar primeiramente em um ambiente de teste.

    Nilton, valeu pela dica.

    sexta-feira, 9 de fevereiro de 2007 10:03
    Moderador
  • Pessoal,

    Lembro que na época que frequentava o newsgroup ainda, escrevi um código que faria exatamente a mesma coisa.

    Não sei se lembram.

    De qualquer forma essa dica valeu!

     

    segunda-feira, 26 de fevereiro de 2007 21:19
  • Pessoal,

    Alguém tem alguma novidade neste assunto para o SQL Server 2005 ?
    A única coisa que eu achei foi um DENY VIEW ANY DATABASE TO usuario. Fora isso não encontrei mais nada!
    Testei esse comando ai em cima mas ou o cara vê tudo ou não vê nada... Muito esquisito... Pela estrutura de treeview do Management Studio não aparece nenhuma base de dados mas se ele usar um USE database, ele acessa...

    Vlw

    quinta-feira, 6 de agosto de 2009 19:21