Форум: "Базы";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c