Eu preciso liberar acesso para uma empresa executar queries em um banco (sql2008).
Eu gostaria de possibilitar esse acesso via servidor de aplicativo, ao qual eles já tem acesso, e não diretamente no servidor SQL.
Que aplicativo eu poderia instalar no servidor de aplicativos para possibilitar essas queries ?
segunda-feira, 28 de dezembro de 2009 18:53
Tem um que eu utilizo e é muito bom (mas o recurso de exportacao para CSV nao é free)
A vantagem é que ele nao precisa instalar, basta colar o executavel.
http://sqlmanager.net/fr/products#mssql
Vc pode baixar de graça o
EMS SQL Manager for SQL Server Freeware (executable-file only)
http://sqlmanager.net/en/products/mssql/manager/download/770
Mas o recurso de exportaçao é travado. Vc pode testar por 30 dias. No mais, ele nao é caro, e pode ser mais barato que desenvolver uma soluçao propria.
Outra vantagem é qeu vc pode comprar só o modulo de exportaçao, assim mesmo com uma conta dbowner a unica coisa que seu cliente podera fazer é criar consultas (sem alterar a estrutura da base)
http://sqlmanager.net/en/products/mssql/dataexport
http://sqlmanager.net/en/products/mssql/dataexport/download
A versao Business custa $95,00 mas creio que no seu caso até caberia a versao non-comercial (custa $45), porque vc nao vai precisar instalar em diversos computadores,
Marcado como Resposta Junior Galvão - MVPMVP, Moderator terça-feira, 7 de janeiro de 2020 18:32
quarta-feira, 30 de dezembro de 2009 16:20
Que tipo de query vc deseja executar?
Vc pode instalar o SSMS Express nesse servidor de aplicativo para que eles tenham acesso a execuçao de algumas queries e controlar o acesso (por exemplo, evitar de mexer em outros bancos e deletar tabelas) atravez das permissoes no SQL Server.
Poderia descrever um pouco melhor sua necessidade?
segunda-feira, 28 de dezembro de 2009 19:34
A empresa de suporte tem acesso via vpn ao servidor onde está instalado o aplicativo.
Eles tem login com direitos de administrador neste servidor.
Eu gostaria de dar acesso apenas de leitura para eles acessarem o banco (outro servidor) que o aplicativo deles usa.
Porém eles tem um login/password de dbowner desse banco.
Então eu precisaria :
1) criar um login/password no sql que permitisse apenas leitura.
2) instalar algo no servidor de aplicativos que permitisse a execução de queries no banco que está em outro servidor.
3) não permitir que eles usem o login de dbowner que eles tem (criado para o aplicativo deles). Eu teria que deixar a configuração travada para o novo login que eu vou criar, sem permitir que eles modifiquem o usuário de acesso do sql.
* O problema é um pouco complicado, já que eles tem um login poderoso nesse servidor de aplicativos. Eu tenho que criar o acesso ao banco do outro servidor, e ao mesmo tempo evitar que eles consigam mexer nas configurações de acesso ao banco. Não posso deixar eles usarem o login de dbowner que eles tem. Tenho que forçar o login que apenas dá a permissão de leitura...
* No sql2000, isso seria impossível. Mas parece que no sql2008 existem algumas possibilidades...
terça-feira, 29 de dezembro de 2009 13:40
Eu nao creio que isso seja possivel. Se eles tem um acesso como DBOwner entao eles tem todos os direitos sobre a base em questao. A unica coisa que vc poderá fazer é limitar o acesso a outras bases e impedir a criaçao de novavas bases.
Mas verifique algums pontos:
1) O motivo de um acesso como DBOwner?
2) Verifque a possivilidade de utizar application role
3) Que query eles pretendem executar? De consulta? Que tipo de saida eles precisam? CSV? XLS?
"não permitir que eles usem o login de dbowner que eles tem (criado para o aplicativo deles). Eu teria que deixar a configuração travada para o novo login que eu vou criar, sem permitir que eles modifiquem o usuário de acesso do sql. "
Isso é possivel, mas é impossivel impedir que eles usem o outro login.
terça-feira, 29 de dezembro de 2009 14:17
Eles poderiam efetuar updates no banco, sem que eu ficasse ciente disso. E se o aplicativo desse algum
problema, eu perderia um tempão procurando por algo que eles mesmos causaram. Então, eu prefiriria que eles
dessem selects a vontade, mas para inserir, modificar ou deletar, que eles tivessem que falar comigo. Já
aconteceu de eles alterarem uma trigger (pediram para que eu executasse o comando), e o sistema travar. Os
usuários reclamaram, mas eu já estava ciente que aquela trigger havia sido modificada. Então foi fácil voltar
atrás. Se eles fizerem isso diretamente no banco, eu posso ficar perdido em caso de problemas.
Eles tem login de dbowner, mas isso porque o aplicativo deles usa esse login para acessar o banco. O problema
é quando eles modificarem o banco via comando. Via aplicativo não tem problema.
2) Verifque a possivilidade de utizar application role.
Você quer dizer usar application role para o login do aplicativo deles ? Se eles conseguirem se logar com esse
usuário do aplicativo, isso adiantaria alguma coisa ? Como isso funciona ?
Eles precisam apenas de selects. O resultado pode ser em grid, txt ou rpt. Se precisarem de algo diferente, eles
convertem por fora do sql.
terça-feira, 29 de dezembro de 2009 17:07
Quando eu pergunte sobre o "motivo de um acesso como DBOwner" foi porque vc disse:
"Porém eles tem um login/password de dbowner desse banco."
O aplication role funciona da seguinte forma:
1)vc define um login (pode ser um grupo) com direito somente de conexao (nem leitura de tabelas sao permitidas)
2)sua aplicaçao executa um sp_setapprole com o nome da regra e a senha
com isso vc consegue controlar quais aplicaçoes podem usar o banco. Ou seja, mesmo que um usuario tenha acesso via SSMS, e seu login possa acessar o SQL, ele nao vai conseguir fazer nada no banco, poque ele nao sabe qual é a senha do application role. Mas eu nao sei se isso se aplica a seu caso, mas se vc quiser sabert mais:
Como sao queries simples, porque vc mesmo nao cria uma aplicaçao para isso? Temm muita coisa pronta e de simples implementaçao e personalizaçao. Veja alguns exemplos:
http://www.codeproject.com/KB/database/QueryDesigner.aspx
http://www.codeproject.com/KB/database/SqlBuilder.aspx
Como vc tem controle do fonte, vc poderia incluir algumas "proteçoes", como por exemplo, fixar o login ou permitir o uso somente de queries que comecem com SELECT, por exemplo...
Nos fizemos algo parecido dentro do nosso sistema, que permitia gerar "relatorios" tabulares. Nao é muito complicado e nem precisa muito conhecimento de programaçao.
terça-feira, 29 de dezembro de 2009 18:26
Parece que o assunto é um pouco mais complexo do que eu pensei.
Pelo jeito, isso vai avançar para o novo ano.
Estou dando uma lida nesses links que você me passou.
Eu nunca criei uma aplicação desse tipo, e vou ter que obter algumas informações antes.
Por enquanto mais uma pergunta apenas...
Se eu não quizer instalar o sql server management studio no servidor de aplicativos, existe algum outro software que posso instalar para permitir queries ? (sem ser esse aplicativo a desenvolver...).
quarta-feira, 30 de dezembro de 2009 15:49
Na verdade a sua necessidade esta mais relacionada a aplicação em 3 camadas do que propriamente ao acesso ao banco de dados.
Não seria o caso de criarmos uma camada de acesso aos dados de forma simples, eliminando qualquer outro recurso do próprio SQL Server.