07.08.2007 19:23
Ну чего вы страдаете?
1. У inna явно для должности "Администратор БД" даны права на карточки товаров. Достаточно зайти в модуль Администратора и убедиться в этом. Поэтому у нее и не ругается.
2. Клиент СМ доступа к таблице smcardassort явно не имеет. Он получает ассортимент через какую-то вьюху. Точно какую не скажу - лень смотреть.
3. При изменении ассортимента из под клиента СМ так же запускается какя-то хранимая процедура/функция (или несколько).
08.08.2007 08:55
Цитата:
YuraZ Ну чего вы страдаете?
1. У inna явно для должности "Администратор БД" даны права на карточки товаров. Достаточно зайти в модуль Администратора и убедиться в этом. Поэтому у нее и не ругается.
2. Клиент СМ доступа к таблице smcardassort явно не имеет. Он получает ассортимент через какую-то вьюху. Точно какую не скажу - лень смотреть.
3. При изменении ассортимента из под клиента СМ так же запускается какя-то хранимая процедура/функция (или несколько).
Inna уже писала что у Supermaga прав на карточки нет. И она знает как посмотреть права - не надо уж совсем за дундочку держать. Второй год 47 баз тащит - уж чего то имеет в голове. Внимательнее лучше бы ветку читал. И что значит явно не имеет? Ты запукал update? У тебя ругается? Я пробовала и на офисной базе( в которой могут быть огрешности) и на совсем новой магазинной. Ошибка не появляется.
08.08.2007 09:31
Не успеваю тут с вами по полной пофлудить, но суть в разграничении прав на уровне security самой базы и на уровне приложения, т.е. СМ. Ошибка с номером в диапазоне 20000 - пользовательская, т.е. ее выдумал сам супермаг по триггеру.
Остальное видно тут:
Цитата:
SQL> connect supermag/pwd@taberco
Connected.
SQL> select count(*) from smcardassort;

COUNT(*)
----------
233933

SQL> connect olegon/pwd@taberco
Connected.
SQL> select count(*) from smcardassort;
select count(*) from smcardassort
*
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from user_views;

no rows selected

SQL>
08.08.2007 09:37
Да, в ответ топикстартеру, я бы на твоем месте работал бы из под supermag, поскольку данные в его схеме и триггер тебе по любому придется отключать, если не хочешь заморачиваться с регистрацией подключения.
08.08.2007 11:01
Цитата:
inna Inna уже писала что у Supermaga прав на карточки нет. И она знает как посмотреть права - не надо уж совсем за дундочку держать. Второй год 47 баз тащит - уж чего то имеет в голове. Внимательнее лучше бы ветку читал. И что значит явно не имеет? Ты запукал update? У тебя ругается? Я пробовала и на офисной базе( в которой могут быть огрешности) и на совсем новой магазинной. Ошибка не появляется.
1. Ну я не хотел никого обидеть.
2. "Явно не имеет" - именно это и означает. Т.к. распределение прав пользователей СМ идет на уровне вьюх. Это, естественно проще. И изменение структуры запроса во вьюхе никаким боком не влияет на права. Достаточно запустить SQL Monitor и станет видно, что при просмотре карточки данные выбираются именно из вьюх.
3. Update естественно запускал. И не раз. Так вот, пока не дашь supermag-у права на карточки, срабатывает именно этот тригер. Причем и у меня и наших клиентов.
08.08.2007 11:56
Цитата:
OlegON Да, в ответ топикстартеру, я бы на твоем месте работал бы из под supermag, поскольку данные в его схеме и триггер тебе по любому придется отключать, если не хочешь заморачиваться с регистрацией подключения.
Хорошо, допустим я так и поступлю. Тогда у меня возникает вопрос, что будет если в промежутке после выключения триггера и до его включения произойдет сбой (вылетит программа, выключится компьютер)? Триггер же так и останется отключенным. Какие будут последствия? 2) Триггеры включаются/выключаются в рамках транзакций? И последнее, всё это хорошо, но я так и не увидел ответа на вопрос, как клиент СМ узнает о том, какие товары в каком ассортименте находятся?
08.08.2007 12:03
1) Беда будет, я обычно регламентирую такие работы без пользователей, подконтрольно, потому, как кто-то без этого триггера параллельно может внести изменения в таблицу. 2) В рамках всей базы 3) Думаю, стОит поверить YuraZ, поскольку ценность этой информации минимальна, чтобы ее проверять.
08.08.2007 12:43
Не думаю, что стОит поверить YuraZ'у, иначе клиент СМ не посылал бы следующую серию запросов к базе для того чтобы показать мне товары из ассортимента '3.' внутри которого карточка с артикулом 019416

Код:
select distinct TMain.Article,TMain.Name,TMain.Accepted,TMain.DataType,TMain.DataSubType,TMain.ScaleLoad,TMain.CashLoad,TMain.ReceiptOk,TMain.CardComment 
from Supermag.SMCard TMain,Supermag.SMCardAssort R1, Supermag.SACardAssort R2
where (R2.Tree='3.' and R2.ID=R1.IDAssort and
TMain.Article=R1.Article)
order by TMain.Article

select TMain.Article,TMain.GlobalArticle,TMain.ArrivedFrom,TMain.Name,TMain.ShortName,TMain.IDMeasurement,TMain.IDClass,TMain.Accepted,TMain.DataType,TMain.DataSubType,TMain.ScaleLoad,TMain.CashLoad,TMain.ReceiptOk,TMain.Storage,TMain.Deadline,TMain.Losses,TMain.Scrap,TMain.Waste,TMain.MesName,TMain.MesAbbrev,TMain.CardComment,TMain.Country,TMain.Flags,TMain.CutPriceDays,TMain.IDScale,TMain.SubArticle,TMain.MinProfit,TMain.SupplyPricePercentP,TMain.SupplyPricePercentM,TMain.IDThreeTorg,TMain.IDOneTorg,Supermag.SACardClass.Tree,Supermag.SACardClass.Name,nvl(TMain.MesName,Supermag.SAMeasurement.Name),nvl(TMain.MesAbbrev,Supermag.SAMeasurement.Abbrev),BornIn
from Supermag.SMCard TMain,Supermag.SACardClass,Supermag.SAMeasurement
where Supermag.SACardClass.ID=TMain.IDClass
and Supermag.SAMeasurement.ID=TMain.IDMeasurement
and TMain.Article=:V0001

select TMain.Article,TMain.GlobalArticle,TMain.ArrivedFrom,TMain.Name,TMain.ShortName,TMain.IDMeasurement,TMain.IDClass,TMain.Accepted,TMain.DataType,TMain.DataSubType,TMain.ScaleLoad,TMain.CashLoad,TMain.ReceiptOk,TMain.Storage,TMain.Deadline,TMain.Losses,TMain.Scrap,TMain.Waste,TMain.MesName,TMain.MesAbbrev,TMain.CardComment,TMain.Country,TMain.Flags,TMain.CutPriceDays,TMain.IDScale,TMain.SubArticle,TMain.MinProfit,TMain.SupplyPricePercentP,TMain.SupplyPricePercentM,TMain.IDThreeTorg,TMain.IDOneTorg,Supermag.SACardClass.Tree,Supermag.SACardClass.Name,nvl(TMain.MesName,Supermag.SAMeasurement.Name),nvl(TMain.MesAbbrev,Supermag.SAMeasurement.Abbrev),BornIn
from Supermag.SMCard TMain,Supermag.SACardClass,Supermag.SAMeasurement
where Supermag.SACardClass.ID=TMain.IDClass
and Supermag.SAMeasurement.ID=TMain.IDMeasurement
and TMain.Article=:V0001

select nvl(Article,'019416'),D.ID,D.Name,PropVal 
from Supermag.SMCardProperties TMain,Supermag.SACardPropDef D
where TMain.PropID(+)=D.ID
and D.Status='1'
and TMain.Article(+)='019416'
order by D.Name

select TMain.Article,TMain.AltUnit,TMain.Rate 
from Supermag.SMAltUnits TMain
where TMain.Article='019416'
08.08.2007 13:40
Цитата:
Pyatak Не думаю, что стОит поверить YuraZ'у, иначе клиент СМ не посылал бы следующую серию запросов к базе для того чтобы показать мне товары из ассортимента '3.' внутри которого карточка с артикулом 019416
А ты можешь сказать что ты именно хочешь узнать? Может тебе посмотреть в сторону прав и ролей доступных пользователю?
08.08.2007 14:45
Цитата:
kadr А ты можешь сказать что ты именно хочешь узнать? Может тебе посмотреть в сторону прав и ролей доступных пользователю?
Собственно, мне надо сделать две простые вещи:
1) отобрать карточки из ассортимента
2) модифицировать короткое название отобранных карточек
с тем условием, что сделать это, подключившись обычным пользователем, так чтоб никого из базы не выгонять и сделать это безопасно. Всего-то.
Да, и при этом не добавлять никаких дополнительных разрешений в базу, т.е. делать так, как делает клиент СМ.
Часовой пояс GMT +3, время: 13:52.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.