VERIFICAR SE USUÁRIO ESTÁ CADASTRADO SQL SERVER.

DJROBERTOSC 06/02/2024 23:07:21
#503008
Olá galera, estou com um problema. Tenho que fazer um form que verifique se usuário esta cadastrado no Sql Server.
Pois antes de de abrir o software tem que verificar se usuário existe ou não cadastrado no servidor.
Sql Server 2019. Uso VB.net com Visual Studio 2022.
Agradeço de coração a ajuda de vocês. Obrigado :)
KERPLUNK 07/02/2024 06:52:39
#503011
Resposta escolhida
Tá meio confuso isso. Você se refere à usuário no banco? Ou um registro em uma tabela do banco?
DJROBERTOSC 07/02/2024 12:12:39
#503016
Olá fera, Me refiro a usuário do banco, cadastrado no SQL server. :)
KERPLUNK 07/02/2024 12:56:44
#503017
Muito simples:

select name as username,
create_date,
modify_date,
type_desc as type,
authentication_type_desc as authentication_type
from sys.database_principals
where type not in ('A', 'G', 'R', 'X')
and sid is not null
and name != 'guest'
order by username;
DJROBERTOSC 07/02/2024 16:18:01
#503023
Ok fera, muito obrigado, vou fazer uns testes e ver se isso resolve meu problema. Obrigado :)
DJROBERTOSC 07/02/2024 21:21:02
#503024
KERPLUNK , O chat GPT me passou esse código em VB.Net. Porem, dá um erro Dizendo que " O password_hash não existe na Tabela"
No caso o password_hash seria o nome do campo na tabela conde grava a senha. Poderia ver onde estou errando ou esquecendo de fazer? Obrigado, valeu fera. :)
-----------------------------------------------------------------------
Imports System.Data.SqlClient

Public Class Form1
Private connectionString As String = "suaConnectionString"

Private Function AutenticarUsuario(username As String, password As String) As Boolean
Dim query As String = "SELECT COUNT(*) FROM sys.server_principals WHERE name = @username AND password_hash = HASHBYTES('SHA2_512', @password)"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(query, connection)
command.Parameters.AddWithValue("@username", username)
command.Parameters.AddWithValue("@password", password)

connection.Open()
Dim result As Integer = DirectCast(command.ExecuteScalar(), Integer)

If result > 0 Then
Return True
Else
Return False
End If
End Using
End Function

Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Dim username As String = txtUsername.Text
Dim password As String = txtPassword.Text

If AutenticarUsuario(username, password) Then
MessageBox.Show("Usuário autenticado com sucesso!")
Else
MessageBox.Show("Usuário ou senha incorretos.")
End If
End Sub
End Class
DJROBERTOSC 07/02/2024 21:26:40
#503025
connectionString esta apontando para o banco de dados master, ao menos foi o que informou o ChatGPT, hehehehehe
KERPLUNK 08/02/2024 08:23:11
#503026
Deixa eu ver se entendi: você faz uma pergunta, eu dou uma resposta, você vai em outra fonte e a resposta da outra fonte não está correta. Experimentou a query que eu passei? Peça no GPT pra consertar o campo inexistente, ou simplesmente tire ele da query.
DJROBERTOSC 08/02/2024 16:20:07
#503030
Cara desculpe se te irritei, não foi intencional. Usei a sua query no SMSS, mas não pegou o nome de usuário. (Não sou bom em ralação a SQL)
E como quero fazer isso via código do VB.NET Recorri ao ChatGPT justamente pra não ficar enchendo muito o saco aqui. Mas agradeço o tempo que você perdeu comigo.
Mas uma vez reitero minha humilde Desculpa pelo ocorrido.
Tópico encerrado , respostas não são mais permitidas