Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не все йогур... э-э-э таблицы одинаково доступны  [new]
AlMal
Member

Откуда:
Сообщений: 44
Коллеги!

Давненько не брал в руки шашек, а тут приспичило...
Прошу пояснить в чем разница между двумя таблицами.
Они находятся в одной базе рядышком.
Я пишу десктопное приложение и хочу логиниться от имени юзера с ограниченными правами.
Я создал логин для входа, создал юзера, смаппировал его на базу, указал у юзера защищаемые объекты и т.п.
На C# пишу
--------------------------------------------------------------------------------
static String connetionString = "Data Source=...;Initial Catalog=SolidSIM;Persist Security Info=True;User ID=operator2;Password=...;MultipleActiveResultSets=True;Application Name=EntityFramework";

SqlConnection cnn = new SqlConnection(connetionString);
cnn.Open();

sql = "delete from Msgs where ... не важно
SqlCommand cmd2 = new SqlCommand(sql, cnn);
cmd2.ExecuteNonQuery();
// выполняется!

sql = "delete from [Files] where ... не важно
SqlCommand cmd3 = new SqlCommand(sql, cnn);
cmd3.ExecuteNonQuery();
// ОШИБКА см. скриншот https://yadi.sk/i/vZnpQYAnt7kSC
-------------------------------------------------------------------------------
Сначала она ругалась на недостаток прав на запуск xp_cmdshell (тоже только на втором вызове). Я сделал
USE master;
GRANT EXECUTE on xp_cmdshell to operator2
И стала появляться уже эта ошибка (см. скриншот выше).
Да, я прочитал эту https://www.sql.ru/forum/448933/xp-cmdshell-i-prava ветку.
Если сделать
EXEC sp_xp_cmdshell_proxy_account 'MyDomain\Administrator', 'myDomainPassword'
то все работает, но это не объясняет ситуацию выше.

Таблицы равноправные.
Удаление из них делается одинаковыми программными средствами: ExecuteNonQuery();
А результат разный.

Ниже привожу настройки
Логин
роли сервера
https://yadi.sk/i/KqVNhYbOt7nGJ
Сопоставление пользователей
https://yadi.sk/i/aFAllWSkt7mVC

Пользователь базы SolidSIM
general
https://yadi.sk/i/1jPXZX_gt7mwc
собственные схемы
https://yadi.sk/i/NMxIMrQgt7mzb
членство
https://yadi.sk/i/VF9K2SHft7n4J
Защищаемые объекты
channels
https://yadi.sk/i/rSqgjfGWt7n8S
msgs
https://yadi.sk/i/BFoy-Xnzt7mmg
files
https://yadi.sk/i/UDgGPBNWt7mq6

Галочки в таблицах Msgs и Files одинаковые.
Но, очевидно, что что-то разное.
Что?


И второй момент.
Если подключиться к серверу логином operator2, то в базе SolidSIM я могу смотреть и редактировать ВСЕ таблицы.

У меня простой вопрос - как сделать так чтобы юзер operator2 мог делать только то, что я настроил - читать из таблицы Channels и делать все действия с таблицами Msgs и Files, а с остальными таблицами - ничего?

Мне много не надо.

select @@version
Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
May 14 2014 18:34:29
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
8 июл 16, 15:29    [19386694]     Ответить | Цитировать Сообщить модератору
 Re: Не все йогур... э-э-э таблицы одинаково доступны  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
схемы у таблиц поди разные
8 июл 16, 15:43    [19386789]     Ответить | Цитировать Сообщить модератору
 Re: Не все йогур... э-э-э таблицы одинаково доступны  [new]
o-o
Guest
я чего-то не вижу или зачем DELETE-у нужен xp_cmdshell?
может, там на таблице висит интересный триггер на DELETE,
где используется xp_cmdshell?
8 июл 16, 15:49    [19386821]     Ответить | Цитировать Сообщить модератору
 Re: Не все йогур... э-э-э таблицы одинаково доступны  [new]
AlMal
Member

Откуда:
Сообщений: 44
o-o!

Точно! Есть триггер и как раз делает удаление файла через cmd_shell.
(Забыл про него совсем...)
То есть первый вопрос решили.

А что делать со вторым вопросом?
Как сделать так чтобы новый юзер имел доступ только к трем таблицам (согласно его настройкам)?
9 июл 16, 11:57    [19389374]     Ответить | Цитировать Сообщить модератору
 Re: Не все йогур... э-э-э таблицы одинаково доступны  [new]
AlMal
Member

Откуда:
Сообщений: 44
Заново создал новый логин, смапировал на базу (юзер создается автоматом), назначил защищаемые объекты. Все остальное по умолчанию.
Залогинился под этим именем (юзером).
Доступ к таблицам работает правильно.
Видимо вчера наставил лишних галочек где-то.

Так что спасибо всем, тема закрыта.
9 июл 16, 16:56    [19389853]     Ответить | Цитировать Сообщить модератору
 Re: Не все йогур... э-э-э таблицы одинаково доступны  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3971
AlMal
Заново создал новый логин, смапировал на базу (юзер создается автоматом), назначил защищаемые объекты. Все остальное по умолчанию.
Залогинился под этим именем (юзером).
Доступ к таблицам работает правильно.
Видимо вчера наставил лишних галочек где-то.

Так что спасибо всем, тема закрыта.


"Давненько не брал в руки шашек" - всё, выбрасывай шашки
10 июл 16, 09:17    [19391374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить