powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
7 сообщений из 7, страница 1 из 1
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
    #32039546
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю на 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
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
    #32039572
Tulkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В табличке 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
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
    #32039574
Alexandr Kapustin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А sp_helprotect не подойдет для твоих целей?
...
Рейтинг: 0 / 0
Доступ к системным таблицам SQL Server отвечающих за права доступа к таблицам
    #32039590
Queen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tulkin

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

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

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

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

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

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

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

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

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

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

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

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


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