Como permitir o acesso de um usuário do sql server?

2

Eu sou um desenvolvedor-tentando-a-jogar-admin e desejo conectar-me a um servidor sql remoto da minha máquina de desenvolvimento usando um usuário do servidor sql ("op_web").

Quando tento conectar-me a partir do vs2008 Server Explorer, posso conectar-me ao servidor, mas nenhum banco de dados é listado. Se eu me conectar usando o usuário administrador do servidor, todos os bancos de dados serão listados conforme o esperado.

O servidor é uma instalação relativamente nova feita por mim.

Eu tenho

  • permitido para conexões remotas no sql server.

  • criou o login op_web no nível do servidor

  • criou um usuário no nível do banco de dados e atribuiu o login com o mesmo nome

  • funções atribuídas ao usuário para permitir a leitura e a escrita - não atribuí nenhum esquema e o esquema padrão para o usuário é dbo.

Se eu fizer logon (localmente no servidor) usando a autenticação sqlserver management studio / sqlserver e o login criado, posso exibir e alterar os dados da tabela como seria de esperar.

O acesso remoto não me dá escolha de bancos de dados.

No Visual Studio, na máquina cliente, recebo o nome do servidor listado na lista suspensa com o sql server descoberto - e, como mencionado, consigo conectar usando o usuário do Windows (conta de administrador). Além disso, eu tentei de outra máquina física com os mesmos resultados negativos. Não cheira como um problema de firewall, mas eu tentei desativar o firewall do servidor apenas no caso, mas isso não resolveu também. Eu tenho outro servidor de banco de dados onde tudo funciona, e eu clonei todas as configurações de usuário para usuário (por isso cheira como o problema está relacionado com a instância do SQL Server, em vez do usuário).

Quaisquer sugestões para o que eu poderia ter perdido?

(Esta pergunta foi feita no link )

    
por Anders Juul 07.09.2009 / 10:08

3 respostas

2

"Usuários" do SQL Server têm duas partes para eles.

  1. O login do servidor. Definido como nível de servidor e talvez associado a funções de servidor (por exemplo, dbcreator: "Os membros da função de servidor fixa dbcreator podem criar, alterar, descartar e restaurar qualquer banco de dados"). Mapeie usuários do Windows para funções de servidor (parte disso é feito automaticamente, mas depende da versão do SQL Server 1 )

  2. Usuários do banco de dados. Estes são criados pelo banco de dados, dadas as funções do banco de dados (por exemplo, "dbo" para controle total ("proprietário do banco de dados") ou "dbreader" para poder ler os dados). Quando criar, estes estão associados a um login do servidor.

Você pode definir as funções do servidor e do banco de dados para conceder permissões específicas.

Consulte os Manuais Online do SQL Server (ou no MSDN) para obter mais detalhes.

Portanto, é necessário, usando a conta de administrador, criar um login de servidor para sua conta de usuário do Windows e conceder acesso aos bancos de dados com os quais você precisa trabalhar. Se você está definindo coisas (tabelas, visualizações, procs armazenados, ...) você realmente precisa do papel "dbo", ou algum trabalho para um controle mais refinado.

Lembre-se de testar o aplicativo apenas com o acesso de que o aplicativo precisa (por exemplo, é um aplicativo raro que criaria / eliminaria / alteraria visualizações ou tabelas).

1 No SQL Server 2005, o grupo Administradores local da máquina host é mapeado para um login com a função de servidor "sysadmin". Em 2008, você especifica quais contas devem ser mapeadas na configuração. / p>     

por 07.09.2009 / 12:13
1

Para poder ser visto na rede (conectar-se remotamente), você precisará verificar se a instância do SQL Server tem uma biblioteca de rede como TCP / IP configurada para ele. Você pode configurar isso usando o SQL Server Configuration Manager. Se você tiver que fazer uma alteração, ela não entrará em vigor até que você reinicie o SQL Server. Agora, se for uma instância nomeada, você também desejará garantir que o serviço Navegador do SQL Server esteja em execução. Isso fornece a porta TCP para um cliente tentando encontrá-lo com relação a uma instância nomeada. E você precisará certificar-se de que há exceções em seu firewall para ambos os serviços.

Com relação ao login do SQL Server, se você tentar fazer logon usando o SQL Server Management Studio, se receber um erro indicando que não é uma conexão / conta confiável, o SQL Server estará configurado para usar a autenticação do Windows, que significa que você não pode se conectar usando um login baseado no SQL Server. No seu caso, você indicou que você definiu para o modo misto, que é o que você quer. Se, no entanto, você não reiniciou o SQL Server depois de fazer a alteração, esse poderia ser o problema. Novamente, essa é outra dessas configurações que só são executadas na inicialização.

O erro do Kerberos que você pode ignorar. Isso ocorre porque somente um administrador de domínio ou a própria conta do computador (se você estiver executando o serviço Nework no Windows 2003) pode registrar um SPN. Então, se você estiver usando qualquer outra coisa, esse erro será exibido. Nesse caso, é melhor criar o SPN manualmente, mas isso não deve ser feito aqui porque isso só é exibido para a autenticação do Windows. O Kerberos não tem impacto nos logins baseados no SQL Server.

Agora, com relação ao usuário do SQL Server, você consegue se conectar ao SQL Server localmente usando o SQL Server Management Studio?

    
por 07.09.2009 / 16:35
0

Desculpas estão em ordem - o problema está resolvido agora:

Eu reinstalei o servidor inteiro e adicionei o sql server como a primeira coisa - eu suspeitava que o VisualSVN, trabalhando via SSL, estava destruindo uma conexão segura também necessária pelo login do sqlserver.

Na verdade, o problema ainda estava lá, mas tentar novamente desativar o firewall realmente resolveu o problema imediato.

Eu fiz um buraco no firewall para 1433 / TCP e as coisas estão onde eu quero.

Obrigado pelo seu tempo, embora ...

    
por 08.09.2009 / 12:57