Não é possível acessar o banco de dados SQLServer

2

Estou tentando converter um banco de dados do Access para usar um back-end do SQL Server. Eu upsizei o banco de dados e tudo funciona no servidor, mas não consigo acessá-lo remotamente.

Estou executando o SQLServer Express 2005 no Windows Server 2003. O servidor não está configurado como um controlador de domínio nem está conectado a um domínio. Os computadores dos quais estou tentando acessar o servidor fazem parte de um domínio, mas não há controladores de domínio locais. Estou em um local remoto e os computadores estão configurados e conectados ao domínio no escritório doméstico e, em seguida, enviados para nós. Normalmente fazemos login com credenciais em cache e VPN no home office quando precisamos acessar o domínio.

Eu posso usar a Conexão de Área de Trabalho Remota para acessar o servidor 2k3 que está executando o SQLServer. Se eu fizer login no servidor com o meu nome de usuário, posso abrir o banco de dados, acessá-lo através da Conexão Confiável e o banco de dados funciona. Se eu tentar executar o banco de dados localmente, no entanto, recebo a caixa de diálogo Logon do servidor. Eu não posso usar uma conexão confiável porque meu login local é para o domínio de home office e não é reconhecido pela máquina SQLServer. Se eu tentar usar o nome de usuário / senha que é local para o SQLServer, recebo um erro de login com falha. Eu tentei digitar o nome de usuário como "username", "workgroup / username" (onde "workgroup" é o nome do grupo de trabalho no SQLServer), "sqlservername / username" e "[email protected]" onde "1.2. 3.4 "é o IP do SQLServer. Em todos os casos, recebo um erro de falha no login. Como eu disse, posso acessar o servidor via Conexão de Área de Trabalho Remota com o mesmo nome de usuário e senha e usar o banco de dados, para que as permissões para o nome de usuário pareçam corretas tanto para uma conexão remota quanto para acesso ao banco de dados. Não tenho certeza de onde ir a partir daqui e qualquer ajuda seria apreciada.

    
por user24803 14.01.2010 / 16:42

2 respostas

1

Antecedentes

O Microsoft SQL Server suporta dois métodos de autenticação diferentes: autenticação do SQL Server e autenticação do Windows. É importante entender qual é a diferença para configurar um SQL Server.

A autenticação do SQL Server exige que o próprio SQL Server mantenha um banco de dados de nomes de usuários e senhas com permissão de acesso ao banco de dados. O processo do SQL Server é responsável por autenticar os usuários comparando o nome de usuário e a senha (hash) em relação ao seu próprio banco de dados. Esse método de logon não permite o logon único porque não está integrado ao Windows e as credenciais fornecidas não são totalmente relacionadas às credenciais da conta do Windows (domínio ou local).

A autenticação do Windows usa a autenticação padrão do Windows para acessar o banco de dados. O SQL Server ainda é responsável pela autorização ("Bob é permitido entrar?"), Mas o Windows agora se torna responsável pela autenticação ("Isso é realmente Bob?"). Você não pode inserir credenciais ao usar a autenticação do Windows; É por isso que as caixas de entrada de nome de usuário e senha são desabilitadas no SQL Server Management Studio quando você seleciona Autenticação do Windows. Seja qual for o usuário que o programa cliente está executando, assim como o usuário autenticado no SQL Server (você pode sobrescrever qual usuário é autenticado usando runas /netonly ).

Quando um programa tenta acessar o SQL Server via autenticação do Windows, o SQL Server solicita ao Windows para autenticar o usuário. Se for um usuário local, o Windows verifica o banco de dados do usuário local e retorna sim ou não. Se a conta for uma conta de domínio e o computador tiver ingressado em qualquer domínio, o Windows passará para o Active Directory para autenticação. O Active Directory validará o usuário se ele existir em algum lugar na floresta confiável (seja no domínio atual ou em um domínio que seja confiável ).

Sua situação

Sua cópia do SQL Server está sendo executada em um computador sem domínio. Quando você área de trabalho remota no computador, você está executando programas como um usuário local. Quando você usa "Conexão Confiável" (que realmente significa "Usar autenticação do Windows"), o Windows sabe quem é sua conta local e a valida. O SQL Server permite que você acesse.

Quando você executa um programa em um computador que faz parte do domínio e tenta autenticar por meio da Autenticação do Windows, está tentando autenticar em um computador sem domínio usando uma credencial de domínio. O computador sem domínio não sabe como autenticar via domínio (por definição, não confia no domínio), então a autenticação falha.

Soluções possíveis

  1. Use a autenticação do SQL Server. Use uma ferramenta como o SQL Server Management Studio para criar logins do SQL Server para cada usuário que precisa de acesso. Você não poderá usar a caixa de seleção "Usar conexão confiável" e os usuários sempre precisarão inserir suas credenciais para o SQL Server. Dependendo do programa que está tentando acessar o SQL Server, ele pode fornecer algum método para salvar as credenciais no registro ou os usuários protegem o armazenamento local para que o usuário não precise digitá-los sempre.

  2. Quando você executa o SQL Server Management Studio localmente, execute-o com o comando runas da seguinte maneira:

    runas /user:username /netonly "C:\Path\to\SSMS.exe"
    

    Isso permitirá que você use a Autenticação do Windows porque, em vez de passar suas credenciais conectadas, você passará credenciais para a conta "username". Essa conta deve ser aquela que existe na máquina de destino.

  3. Participe do computador que está executando o SQL Server no domínio e use. (Você também pode precisar executar o SQL Server como uma conta de domínio em vez de uma conta local, mas não tenho certeza.) Nesse ponto, o SQL Server seria capaz de autenticar usuários usando o Active Directory e "Usar conexão confiável". "funcionará sem inserir nenhuma credencial. Claro, você ainda precisará decidir quais usuários estão autorizados a acessar o banco de dados; você pode usar o SQL Server Management Studio para isso.

  4. Promova o servidor que executa o SQL Server para um controlador de domínio de um novo domínio (do qual é o único membro). Então você pode criar uma confiança entre os dois domínios para que o SQL Server O computador pode enviar credenciais para o outro domínio para autenticação e a Autenticação do Windows funcionará. Nenhuma credencial precisa ser inserida. Você ainda precisará autorizar usuários no SQL Server Management Studio.

por 24.09.2011 / 17:22
0

Você ativou as conexões TCP / IP e desbloqueou todas as portas relevantes (acho que 1433, mas acho que ele muda / aumenta automaticamente) no seu firewall?

Por fim, se você quiser acesso a grupos de trabalho, verifique se o SQL Server está configurado para acesso de modo misto e não apenas para segurança integrada. Além disso, você pode precisar criar manualmente logins para cada usuário / grupo no servidor SQL.

    
por 14.01.2010 / 17:00