sábado, maio 01, 2021

Habilitando SQL Authentication e o usuário SA

 Um problema comum quando se utiliza o SQL Server é quando não é possível entrar com usuários SQL Server, exemplo o super usuário “sa”, pois durante a instalação foi configurado para Windows Authentication.

Como mencionado em um post no Fórum do MSDN: “Criei a instância, criei senha para meu login, mais quando vou entrar pela autenticação do SQL SERVER, ele dá erro, já pela da autenticação do Windows ele dá certo…”

Visto que não é possível ficar reinstalando o SQL Server, somente para trocar a autenticação de Windows Authentication para “Mixed” Authentication, segue neste post a solução para este problema.

Primeiramente é necessário entrar no SQL Server utilizando o SQL Server Management Studio. Conforme a figura abaixo, estou conectando em uma instância do SQL Server 2008 Express utilizando a autenticação Windows Authentication, mas este exemplo funciona perfeitamente desde o SQL Server 2005 até o 2016.

Conectando

Após conectar, clicando com o botão direito do mouse sobre a instância do SQL Server na janela Object Explorer (Atalho F8 ou Menu “View\Object Explorer”), item Properties.

Propriedades

Nesta nova janela, na aba (“página”) Security, altere “Server authentication” para “SQL Server and Windows Authentication mode”.

SQL Server and Windows Authentication mode

Feito isso, uma janelinha informará que para esta alteração ter efeito, será necessário que o serviço do SQL Server deve ser reiniciado. Mas isso pode ser feito depois, quando for terminada a configuração dos usuários do SQL Server, então deixe para depois.

Restart

Continuando na janela Object Explorer, expandindo a instância, “folder” Security\Logins, pode ser criado novos usuários do SQL Server ou seguindo o objetivo inicial deste tópico, habilitar o usuário “sa”. Conforme a figura abaixo, botão direito sobre o login “sa”, menu Properties.

Configurando o login SA

Na nova janela, altere o password do usuário, também é possível alterar o “idioma” e o banco de dados padrão deste usuário nesta janela, entre outras funcionalidades.

Alterando a senha do SA

Na aba (“página”) Status, clique na opção “Grant” em “Permission to connect to database engine” e “Enable” em “Login”.

Permission to connect to database engine

Outra maneira pratica de habilitar o usuário “sa” é por meio de script, exemplo:

1
2
3
4
ALTER LOGIN sa ENABLE;
GO
ALTER LOGIN sa WITH PASSWORD = 'P@ssw0rdM0del0';
GO

Então, agora resta reiniciar o SQL Server. Para não ter que entrar nos Serviços do Windows ou SQL Server Configuration Manager ou qualquer variante como arquivos .bat ou SQL Server Surface Area.

Uma dica é clicar com o botão direito na instância do SQL Server na janela Object Explorer e “Restart”.

Restart

Clique em Yes nesta próxima janelinha, para dizer que você TEM CERTEZA QUE QUER REINICIAR O SERVIÇO…

Restart?

Agora é só conectar com o usuário “sa” para testar.

Conectando com o SA

Até o próximo post!

Habilitando a conexão remota no SQL Server

 E ai pessoas, como tenho recebido alguns e-mails pedindo para mostrar “como fazer para que outros computadores acessem o meu banco de dados” e “habilitar o acesso remoto do SQL Server 2008”, então vamos à demonstração!

Antes de começar, se o servidor estiver fora de um “domínio” ou você não saiba o que é “domínio”, dê uma olhada neste artigo:
http://www.sqlfromhell.com/habilitando-sql-authentication-e-o-usuario-sa/

Em seguida, habilitamos o Firewall do Windows (permitindo exceções). Mas para ambientes de teste não há problema em deixá-lo desabilitado.

Firewall

Dentre as diversas exceções, adicionamos mais uma porta:

Portas

Para boa parte dos cenários, a porta TCP 1433 já vai suprir as necessidades:

Porta TCP 1433 e UPD 1434

Em outros cenários mais específicos, pode existir a necessidade de habilitar as portas UPD 1434, TCP 1434 e outras (at. http://msdn.microsoft.com/en-us/library/ms175483.aspx ).

No SQL Server Management Studio, verifique se nas propriedades do servidor esta habilitada a opção “Allow remote connections to this server”. Caso não esteja habilitada, será necessário habilitá-la.

Allow remote connections to this server

No SQL Server Configuration Manager, mais precisamente nos protocolos da sua instância (ex.: SQLEXPRESS, SQL2005, MSSQLSERVER…), entre nas propriedades do protocolo TCP/IP:

SQL Server Configuration Manager

E habilite o protocolo TCP/IP. Em alguns cenários também se faz necessário habilitar o protocolo “Named Pipes”.

Protocolo TCP/IP

E recomendo definir a porta de conexão:

Portas de acesso

Se você quiser configurar outras portas para o SQL Server, dê uma olhada neste artigo:
http://www.sqlfromhell.com/alterando-as-portas-de-conexao-do-sql-server/

Reinicie o serviço do SQL Server da sua instância e o SQL Server Browser, depois em uma máquina cliente, tente se conectar ao servidor com um usuário válido:

SQL Server Browser

Se tudo ocorrer como previsto, teremos a conexão:

Conexão

Bem, estou usando uma VM “zerada” que até o momento tem o Windows Server 2003 R2 e o SQL Server 2008, assim existe grande possibilidade de não funcionar em outros cenários.

Pontos a levar em consideração para tratar outros cenários:

  • Se você não conseguir ao menos dar um “ping” ou compartilhar uma pasta do servidor à rede ou conectar remoto com o Remote Desktop Connection (mstsc.exe), isso pode ser sinal que tem algo errado com o firewall ou a rede ou até mesmo com o Windows (então não é culpa do SQL Server, ainda…).
  • Programas de Antivírus ou Firewall de terceiros, também são grandes culpados por problemas com o acesso remoto, tanto no servidor como no cliente.
  • O usuário que você esta utilizando para se conectar pode não ter permissão para se conectar ou o servidor não esta no domínio (at. http://www.sqlfromhell.com/habilitando-sql-authentication-usuario-sa/ ). Para “testar”, no servidor tente se conectar ao SQL Server com o usuário que você esta utilizando na máquina cliente.
  • Para “testar”, não utilize o SQL Server Management Studio antigo para se conectar a um SQL Server mais novo, pois algumas vezes isso não dá muito certo.

Qual meu IP? Como pegar o IP do usuário no SQL Server

 Um problema que tive recentemente foi tentar descobrir por qual IP os usuários estavam acessando o servidor SQL. Pesquisando nos sites da vida, encontrei várias soluções, até achar uma bem completa sobre a conexão do cliente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
   CONNECTIONPROPERTY('net_transport') AS net_transport,
   -- HTTP, Named pipe, Session, Shared memory, SSL, TCP, VIA
 
   CONNECTIONPROPERTY('protocol_type') AS protocol_type,
   -- SQL, SOAP
 
   CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
   -- SQL, NTLM, KERBEROS, DIGEST, BASIC, NEGOTIATE
 
   CONNECTIONPROPERTY('local_net_address') AS local_net_address,
   -- IP do servidor
 
   CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
   -- Porta
 
   CONNECTIONPROPERTY('client_net_address') AS client_net_address
   -- IP do utilizado

Referências:
https://technet.microsoft.com/en-us/library/bb895240.aspx

https://stackoverflow.com/questions/142142/sql-query-to-get-servers-ip-address

Postagem em destaque

O que faz um Analista de Sistemas?

  Os analistas de sistemas fazem análise de requisitos de software, hardware para especificar um novo sistema ou como um sistema atual pode ...