none
Permissão de usuários - atachar bancos RRS feed

  • Pergunta

  • Salve galera !!!
    Estou com um problema na distribuição de minha aplicação que utiliza o sqlexpress como banco de dados.
    O que acontece é que no meu instalador (Inno Setup) faz a instalação do banco bem como dos meus componentes (Visual basic ). Tudo está funcionando corretamente, porém tem clientes que tem sqlserer2005 e que utilizar a instância dele não utilizar a instância que meu instalador cria.
    Muito bem ...
    Neste caso, estou criando dentro do meu instalador uma opção onde meu cliente tem condições de escolher se vai ser criada uma nova instância ou se vai utilizar a instância dele. Caso ele opte pela instalação de uma nova instância está tudo pronto, porém se ele escolher que deseja instalar em uma instância dele eu terei que fazer algumas validações do tipo:

    • Qual servidor ele quer instalar
    • Qual usuário será utilizado para que os bancos sejam criados ou até mesmo atachados
    • Qual a senha deste usuário

    Minha idéia é que após ele informar o nome do servidor, usuário e senha eu tenha condições de validar se o servidor existe (tentando fazer uma conexão com ele) e se o usuário informado tenha permissão para criar bancos ou atachar bancos.

    Enfim ...

    Gostaria de saber como identifico se um usuário pode criar bancos de dados ou atachar bancos?

    Valeu !!!
    sexta-feira, 14 de março de 2008 16:42

Respostas

  • Olá Pablício,

     

    Nesse caso execute o seguinte comando:

     

    Code Snippet
    SELECT
    Name FROM syslogins WHERE sysadmin = 1 or dbcreator = 1

     

     

    [ ]s,

     

    Gustavo

    sexta-feira, 14 de março de 2008 17:24

Todas as Respostas

  • Boa Tarde,

     

    Você poderia verificar se o usuário é SysAdmin ou está na Role DBCreators, mas se estamos falando de SQL Server 2005 é melhor olharmos um pouco pra frente. Conecte-se no servidor com o usuário desejado e rode o seguinte comando:

     

    Code Snippet
    SELECT
    has_perms_by_name(null, 'Database', 'CREATE DATABASE');

     

     

    Se retornar 1 é por que o login pode criar bancos de dados. Se retornar 0 é porque o login não pode criar bancos de dados.

     

    [ ]s,

     

    Gustavo

     

    sexta-feira, 14 de março de 2008 17:01
  • Gustavo, valeu pela sugestão.

    Mas eu esqueci de falar que posso ter clientes que tenho sql 2000. Daí acho que vale a pena verificar se é Sysadmin ou está na Role DBCreators. Como faço isso? Você pode me ajudar?
    sexta-feira, 14 de março de 2008 17:11
  • Olá Pablício,

     

    Nesse caso execute o seguinte comando:

     

    Code Snippet
    SELECT
    Name FROM syslogins WHERE sysadmin = 1 or dbcreator = 1

     

     

    [ ]s,

     

    Gustavo

    sexta-feira, 14 de março de 2008 17:24