Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-14550
--Magic--
2002-11-26 15:30
2002.12.05
Сравнение строк


3-14472
skiph
2002-11-14 13:13
2002.12.05
ADOQuery и Группировка в отчете


14-14822
Driverrr
2002-11-14 11:20
2002.12.05
Уменьшение объёма конечного файла...


14-14807
Romkin
2002-11-14 11:31
2002.12.05
Последствия встречи в Москве II


3-14439
vss
2002-11-18 08:29
2002.12.05
Фильтр





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский