Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

SQLDMO   Найти похожие ветки 

 
Alex_Sudakov ©   (2002-11-15 13:44) [0]

Господа, может кто сталкивался...Как-то очень странно работает метод Grant для таблицы. Попытки выполнить вот такой код:

var
Grant, Deny: integer;
DB, tbl: variant;
Const
Database="Northwind";
Role="Test_role";
Table="Table1"
...
Grant:= Permission;
Deny:= Grant xor 15;
DB:= srv.Databases.Item( Database );
tbl:= DB.Tables.Item( Table );
ClearPermissionOnTable(Table,Role,Database);
tbl.Grant( Grant, Role, null, true, null );
tbl.Deny( Deny , Role, null, true);

где Permission- одна из констант типа SQLDMOPriv_Select, srv - уже созданный и подключенный объект SQLDMO.SQLServer, приводят к совершенно не понятному результату. Доступ ставится так как хочет, может вообще противоположные значения поставить...
Подскажите, может я что-нить забыл прописать в коде? :(((


 
stone ©   (2002-11-15 13:52) [1]

че та знакомое у тебя имя


 
Alex_Sudakov ©   (2002-11-15 15:15) [2]

Великолепный ответ...:)


 
Alex_Sudakov ©   (2002-11-18 10:37) [3]

Господа, ну неужели никто не сталкивался?! :(


 
3JIA9I CyKA ©   (2002-11-18 11:52) [4]

>>Deny:= Grant xor 15;
Это нафиг!?


 
Alex_Sudakov ©   (2002-11-18 12:02) [5]

Там не два состояния, а три. Grant, Deny и null. Вот и приходится так писать...


 
3JIA9I CyKA ©   (2002-11-18 12:39) [6]

Deny := (not Grant) and 47;
if Deny > 0 then tbl.Deny(Deny, Role, null, true);


 
Alex_Sudakov ©   (2002-11-18 13:06) [7]

Суть не в этом, тут и так все работает нормально... Вопрос в том, что я делаю Grant(15), а ставится все что угодно...:(


 
3JIA9I CyKA ©   (2002-11-18 13:12) [8]

А у маня всё нормально. Пример прислать?


 
3JIA9I CyKA ©   (2002-11-18 13:15) [9]

Ты не задумывался сколько будет
15 xor 15
?

И что выдаст
tbl.Deny(0 , Role, null, true)
?

8)


 
Alex_Sudakov ©   (2002-11-18 13:24) [10]

если можно - пришли пример (может у меня мозги закипают? :)
15 xor 15=0, а вот 1 xor 15 будет 14, что собственно и надо... В grant - то что разрешено, а в deny - соответственно то запрещено... Так что вроде все верно...


 
3JIA9I CyKA ©   (2002-11-18 13:26) [11]

0 ваще низя. Шлю.


 
Alex_Sudakov ©   (2002-11-18 13:39) [12]

Спасибо большое. Значит у меня мозги кипят...:)))
ЗЫ Твой пример работает...:)


 
3JIA9I CyKA ©   (2002-11-18 13:53) [13]

8)


 
Alex_Sudakov ©   (2002-11-18 14:48) [14]

Кстати, может ты мне еще и вот в этом поможешь :)


function GetPermissionOnTable( Table, Role, Database: string ): integer;
var
tbl: variant;
SQLObjectList: variant;
i: integer;
DB:Variant;
begin
Result:= 0;
DB:= srv.Databases.Item( Database);
tbl:= DB.Tables.Item( Table );
SQLObjectList:= tbl.ListUserPermissions(Role);
if SQLObjectList.Count<>0 then
for i:=1 to SQLObjectList.Count do
Result:= Result or SQLObjectList.Item( i ).PrivilegeType;
SQLObjectList:= null;
tbl:= null;
end;


Тоже как-то очень загадочно работает...:(


 
3JIA9I CyKA ©   (2002-11-18 14:55) [15]

А что должно получиться?


 
Alex_Sudakov ©   (2002-11-18 15:04) [16]

Должно вернутся число, описывающее привилегию пользователя.
То, что устанавливалось в первом примере.


 
3JIA9I CyKA ©   (2002-11-18 15:57) [17]

Да... Фигня получается.
Я щАз занят. Если проблема не отвалится, напиши - бум бороть.
8)
Удачи.


 
Alex_Sudakov ©   (2002-11-18 16:07) [18]

ок



Страницы: 1 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
8-14688
MW
2002-08-19 16:24
2002.12.05
TImage


1-14551
Мазут Береговой
2002-11-27 01:35
2002.12.05
Взаимодействие форм...


3-14454
@andrew
2002-11-18 19:19
2002.12.05
Мастер настройки Провайдера. Привет. Может кто знает...


7-14840
kofman
2002-10-05 20:40
2002.12.05
Как определить часовой пояс?


3-14364
Calm
2002-11-19 13:30
2002.12.05
MS SQL - уведомление внешнего приложения