Szukam sposobu jak odróżnić przypadek gdy bledem polaczenia z baza danych jest zły login czy złe hasło.
Na razie robię testy takie:
string zapytanie = poprawneZapytanie;
StringBuilder wlasciwosciWyjatku = new StringBuilder();
using (SqlConnection connection = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand(zapytanie, connection);
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
for (int i = 0; i < ex.Errors.Count; i++)
{
wlasciwosciWyjatku.Append(
"Index #" + i + "\n" +
"Class.ToString(): " + ex.Errors[i].Class.ToString() + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"Number: " + ex.Errors[i].Number + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n" +
"Server: " + ex.Errors[i].Server + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"State: " + ex.Errors[i].State + "\n" +
".ToString(): " + ex.Errors[i].ToString() + "\n");
}
Console.WriteLine(wlasciwosciWyjatku.ToString());
}
}
ConnectionString, buduję tak:
$@"Data Source={NazwaServera}; Initial Catalog={NazwaBazyDanych}; User ID={Login}; Password={Haslo}"
chciałbym wiedzieć/rozróżnić przypadek gdy powodem jest zły login a kiedy złe hasło (do poprawnie wprowadzonego loginu).
Czy z wyjątku jestem w stanie trafić do jakiejś właściwości która to pokaże?
na razie czy to błąd loginu czy hasła, to wynikiem tego kodu jest jak niżej.
Trafiłem na takie info:
https://learn.microsoft.com/en-us/sql/relational-databases/errors-events/mssqlserver-18456-database-engine-error?view=sql-server-ver16
Wydaje się, że to to ale z MS SQL Server jestem noga, będę wdzięczny za podpowiedz jeżeli problemem jest właśnie 'State' = 1, co zmienić w SSMS i gdzie, żeby State mówił co trzeba. W SSMS poruszam się tez po omacku (na razie)
Tego użytkownika Varran starałem się zdefiniować w SSMS z takimi samymi uprawnieniami jak uzytkownik sa czyli jest 'sysadmin' , ale pewnie czegoś poprawnie nie ustawiłem.
PS.
Tym Varranem, mogę pobierać nazwy tabel systemowych.
Wątek powiązany z:
https://4programmers.net/Forum/Bazy_danych/290517-ms_sql_wyszukanie_rekordu_bazy_danych?p=1878019#id1878019