czwartek, 27 stycznia 2011

Sprawdzanie roli użytkownika w SQL Server + C#

W tworzonym przeze mnie projekcie bazodanowym, z wykorzystaniem MS SQL Server 2005 i C#, potrzebowałem sprawdzania, do jakiej grupy użytkowników należy logujący się do bazy danych użytkownik.
Wykorzystując procedurę (serwerową) SQL Servera sp_helpuser z parametrem (nazwą użytkownika) otrzymałem kilka informacji, w tym tą, która mnie interesuje - grupa do której należy użytkownik.
Nazwa grupy do której należy użytkownik zawiera się w polu [GroupName].

Cała metoda, zapisana w C# wygląda tak:
private void sprawdz_role()
{
        SqlDataReader rdr = null;
        SqlParameter username = new SqlParameter("@name_in_db", this.user);
        SqlCommand cmd = new SqlCommand("sp_helpuser", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(username);
        rdr = cmd.ExecuteReader();
        while (rdr.Read())
        {
                this.rola = rdr["GroupName"].ToString();
        }
        MessageBox.Show("Polaczono jako " + rola);
}