Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2012, 23:30   #1
Алекс80
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 17
По умолчанию Запретить SQL-команду другому пользователю

Прошу помощи в этом вопросе. Есть БД-Server 2008, и два пользователя с ролями Admin(db_owner - все права) и Manager(db_datareader-только select).
В ADO.NET Админ может изменять и добавлять записи. А вот Менеджер тоже
когда начинает изменять или добавлять что-то, то его выкидывает Exception.
Вот пример кода:

Код:
try
{
    connect.Open();
    using (SqlCommand comand = new SqlCommand())
    {
         comand.Connection = connect;       
         comand.CommandText ="UPDATE GlassPack  SET Name=@name,                Price=@price  WHERE Id=@ident";

             SqlParameter param = new SqlParameter();
             param.ParameterName = "@name";
             param.SqlDbType = SqlDbType.NVarChar;
             param.Value = name;
             comand.Parameters.Add(param);

             SqlParameter param1 = new SqlParameter();
             param1.ParameterName = "@price";
             param1.SqlDbType = SqlDbType.Decimal;
             param1.Value = price;
             comand.Parameters.Add(param1);

             comand.ExecuteNonQuery();
     }
      catch
     {
         MessageBox.Show("У вас нет прав");
      }
Кто подскажет, как запретить пользователю с правами SELECT выполнить этот запрос. Запрос находится в функции И следовательно её вызвать может любой пользователь. Права назначались во время SQL-запроса(сразу вся база создалась, и права назначены).
То есть по сути нужна проверка: Ты менеджер? Значит не выполнять этот запрос

Последний раз редактировалось Stilet; 21.04.2012 в 12:06.
Алекс80 вне форума Ответить с цитированием
Старый 21.04.2012, 11:12   #2
Goldcoding
Пользователь
 
Регистрация: 04.01.2010
Сообщений: 66
По умолчанию

Почитайте про команду GRANT.
Goldcoding вне форума Ответить с цитированием
Старый 21.04.2012, 12:09   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А чем тот код в топе не устроил?
Если я правильно помню даже Гранты на запрос все равно сгенерируют у клиента исключение, тем паче что роль у менеджера настроена.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при подключеннии пользователю не удалось войти в систему С# и SQL server ilshat09 Помощь студентам 3 19.02.2011 17:07
Проблема с сообщением пользователю vsa_210465 БД в Delphi 1 17.08.2010 17:07
Назначение прав локальному пользователю kabo3d Операционные системы общие вопросы 1 02.11.2009 07:58
Помощь пользователю! Oleg Romanchuk БД в Delphi 10 27.08.2007 07:22