Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам / 7 сообщений из 7, страница 1 из 1
30.07.2002, 09:10:57
    #32039546
Queen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
Работаю на VBA (Access)
Нужем доступ к таблицам отвечающих за права доступа к таблицам баз данных, что-бы получить
1). табличное представление кому чего можно, а кому нельзя.

2). Подгрузить всё это дело в переменные, что-бы программа выдавала ошибку о доступе не в момент выполнения SELECT или UPDATE , а на момент выполнения переменной. Например
IF IDArea = True Then
' можно
Else
' низя
End If

Есть следующие таблицы сервера(по умолчанию)

sysusers - описание юзеров

syscolumns - Название столбцов таблиц баз данных

syspermissions - собственно таблица, отвечающая за распределение прав.

Создано след. представление

SELECT TOP 100 PERCENT dbo.syscolumns.id AS IDTable, dbo.syscolumns.name AS NameTable, dbo.sysusers.name AS NameUser, dbo.syspermissions.actadd, dbo.syspermissions.actmod, dbo.syspermissions.seladd, dbo.syspermissions.selmod, dbo.syspermissions.updadd,
dbo.syspermissions.updmod, dbo.syspermissions.refadd, dbo.syspermissions.refmod
FROM dbo.syscolumns INNER JOIN
dbo.syspermissions ON dbo.syscolumns.id = dbo.syspermissions.id INNER JOIN
dbo.sysusers ON dbo.syspermissions.grantee = dbo.sysusers.gid
WHERE (dbo.sysusers.status = 2)
ORDER BY dbo.sysusers.name

Где
NameTable - имя столбца
NameUser - имя юзера
actmod ... refmod - собственно поля чего можно,а чего нельзя.

собственно проблема вот в чём.

столбцы actmod ... refmod - бинарные, и судя по всему пустые, хотя права к таблицам определенны
Может они где в других таблицах, или я чего не так делаю.

Подскажите пожалуйста как с этим разобратся.

Нужно явный показ в стлбцах, например 0 , -1, NULL

либо какое другое рецение на основе системных SQL таблиц.
...
Рейтинг: 0 / 0
30.07.2002, 10:43:13
    #32039572
Tulkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
В табличке syspermissions нужные поля :
id- ObjectID
grantee- UserID
actadd - Битовая установленных маска прав,
(раскладку точно не помню, но легко выяснить экперементами)
Остается сделать что-нибудь типа

select o.Name,u.Name,
case when actadd&1=1 then 1 else 0 end, --select
case when actadd&2=2 then 1 else 0 end, --insert
case when actadd&4=4 then 1 else 0 end, -- update
case when actadd&8=8 then 1 else 0 end, -- delete
case when actadd&32=32 then 1 else 0 end --Execute
from syspermissions p inner join sysobjects o on o.id=p.id
inner join sysusers u on u.uid=p.grantee

Повторяю,что непосредственно значения маски для операций я мог перепутать.(давно это было...)

Удачи.
...
Рейтинг: 0 / 0
30.07.2002, 10:47:42
    #32039574
Alexandr Kapustin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
А sp_helprotect не подойдет для твоих целей?
...
Рейтинг: 0 / 0
30.07.2002, 11:10:02
    #32039590
Queen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
Tulkin

actadd - может иметь 5 значений ?
у меня в таблице только 32 и 1 причем первых гораздо больше. А где все остальные?

и actmod ... refmod - роли не играют?

Либо та функция каторую Вы написали как-то хитро обращается к этим столбцам?

Если не сложно можно поподробней, я недавно на SQL подсел.
...
Рейтинг: 0 / 0
30.07.2002, 13:00:49
    #32039622
Queen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
Tulkin

Вроде разобрался

actadd - отвечает за разрешение

actmod - отвечает за удаление

Цифры следующие
1--select
8--insert
2-- update
16-- delete

Но когда ил начинаешь помечать вместе - они складываются

например select и Insert выдаёт 9

соответственно Вопрос.
1).Как SQL сервер их преобразовывает обратно

2).и выдаёт то что выдает встроенная команда sp_helprotect ?
...
Рейтинг: 0 / 0
30.07.2002, 14:34:13
    #32039653
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
почитай про побитовые операции...
& - И
| - ИЛИ ....
...
Рейтинг: 0 / 0
30.07.2002, 18:13:07
    #32039735
Queen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
Спасибо, разобрался.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]