|
|
|
Forum Guru
      
участник
Last Login: 15.11.2005 14:48
Сообщ.: 61,
Visits: 672
|
|
Привет, Михаил!
Хочу спросить у вас про права пользователей в SQL Server в режиме Trusted_Connection.
Конфигурация Windows 2000 Server SQL Server 7.0 Desktop Edition
Есть у меня в системе Windows на компьютере SRV группа DB_USERS, в которой ОЧЕНЬ много пользователей. Я хочу предоставить всем им права на пользование таблицами в БД MY_BASE на SQL Server.
Для этого я делаю следующее:
1. Регистрирую на сервере login "SRV\DB_USERS" для моей группы DB_USERS Самих же пользователей группы я НЕ РЕГИСТРИРУЮ иначе зачем мне этот режим доверительного соединения. 2. Регистрирую этот логин (SRV\DB_USERS) в БД MY_BASE под именем GroupDbUsers. 3. Предоставляю для GroupDbUsers права на SELECT необходимых таблиц. 4. Устанавливаю соединение с SQL Server под одним из пользователей группы DB_USERS. Например это пользователь USER1. Утилита так и пишет, что я подключился под пользователем SRV.USER1.
Теперь я могу делать выборку данных из соответствующих таблиц. Но если я захочу проверить свои права на таблицы или вывести список доступных мне таблиц процедурой sp_tables NULL,NULL,NULL,"'TABLE'"
то мои права = 0, а список таблиц пуст. Эту процедуру сервера использует также фунция ODBC SQLTables и многи другие. В итоге получается, что права на самом деле есть, а списка доступных таблиц нет. Что делать???? Ситуация пропадает (то есть появляется список доступных таблиц), если явно регистрировать КАЖДОГО пользователя Windows2000 на SQL Server. Это очень неприятно. Получается, что сервер с одной стороны работает правильно и доступ и права мне предоставляет как члену группы, но информацию о таблицах выдать не может и прав моих выдать не может. Я не могу написать приложение на VisualC++, которое отображает список доступных мне таблиц.
Я приблизительно догадываюсь почему это происходит. Ведь по команде print user_id() мне выдается значение 0, а это UID роли public, а ей действительно эти таблицы не видны. Просто группа Windows DB_GROUP имеет эту роль, но самой группе DB_GROUP права предоставлены ведь.
ГДЕ Я ОШИБАЮСЬ? КАК МНЕ РЕШИТЬ ПРОБЛЕМУ РЕГИСТРАЦИИ ПОЛЬЗОВАТЕЛЕЙ СИСТЕМЫ Windows БЕЗ ИХ ЯВНОГО ПРОПИСЫВАНИЯ НА СЕРВЕРЕ SQL так, чтобы ВИДНЫ были ТАБЛИЦЫ по процедуре sp_tables? Что же это за поддержка такая????? Где режим доверительного соединения??? Все же работает, просто не могу получить информацию!!!!
|
|
|
|
|
Supreme Being
      
участник
Last Login: 21.06.2006 23:51
Сообщ.: 326,
Visits: 3 588
|
|
Кажется я на этот вопрос уже отвечал :) Вообще-то всё замечательно работает, особенно если создавать пользователей ручками, а не через EM. Насколько я понял, "глюк" случается, если не указать для пользователя DB_USERS дефолтной базы данных (точнее не сменить её с masters на MY_BASE)
|
|
|
|
|
Forum Guru
      
участник
Last Login: 15.11.2005 14:48
Сообщ.: 61,
Visits: 672
|
|
НЕТ
Глюк был в том, что не был установлен SP3 для SQL Server7.0
ЭТО БЫЛА ОШИБКА Microsoft, которую они исправили
И вотообще SQL Server дерьмо очень слабенький по сравнению с ORACLE
|
|
|
|
|
Supreme Being
      
участник
Last Login: 21.06.2006 23:51
Сообщ.: 326,
Visits: 3 588
|
|
| Интересно, почему у меня всё работало вообще без единого SP?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 15.11.2005 14:48
Сообщ.: 61,
Visits: 672
|
|
Что у тебя сервак пишет по команде
print @@version
|
|
|
|