[ОТВЕТИТЬ]
07.08.2007 16:51
Pyatak
 
Понадобилось некоторым образом модифицировать короткие имена группы карточек в СМ.
Подключаюсь sys'ом, не дает сделать модификацию, говорит "Текущий пользователь не зарегистрирован в торговой системе"
Подключаюсь обычным пользователем, не могу прочитать таблицу smcardassort, говорит "... не существует", хоть дописывай "supermag." в переди, хоть не дописывай.
Хоть два подключения делай, одно на чтение данных, другое на модификацию. Но клиент СМ ведь как-то получает доступ к этим данным, зная только один пароль. Как?
07.08.2007 16:55
Pyatak
 
На всякий случай уточню.

запрос
Код:
UPDATE supermag.smcard SET shortname='xxx' WHERE article='yyy'
и запрос
Код:
SELECT c.article, c.shortname
  FROM supermag.smcard c,
       supermag.smcardassort ca
 WHERE ca.article=c.article
   AND ca.idassort = xxx
нужно выполнить под одним подключением
07.08.2007 17:04
inna
 
Непонятно. С supermag ом то пробовал? с пользователем.
07.08.2007 17:08
Pyatak
 
Цитата:
inna Непонятно. С supermag ом то пробовал? с пользователем.
С supermag'ом точно не даст модифицировать карточку, так как у этого пользователя на это отсутствуют права.
а вот выборку из smcardassort делать дает.

sys: select - дает, update-не дает
supermag: select - дает, update - не дает
любой_обычный_юзер: select -не дает, update - дает
07.08.2007 17:13
inna
 
А ты уверен? У меня дает модифицировать. Только артикул - поле числовое. Там кавычки не нужны.
07.08.2007 17:20
Pyatak
 
Уверен. Артикул - поле текстовое ( VARCHAR2(50) ), просто в случае чисел, можно кавычки не ставить.

Вот ошибка при модификации под supermag'ом: ORA-20506: Нет прав на 'Карточка складского учета'

Да и хотелось бы получать и модифицировать данные под обычным пользователем. Клиент СМ это же как-то делает.
07.08.2007 17:23
inna
 
Согласна с типом - подзабыла. Погоди, ты откуда апргейдить то пытаешься. У меня с навигатора все работает.
07.08.2007 17:29
Pyatak
 
TOAD Version 7.5.2.0
да это не важно, возможно у тя на пользователя supermag стоят права на доступ к карточкам. я хочу сделать это под обычным пользователем, под тем под которым работаю в клиенте СМ. Клиент СМ же с этими учетными данными всё видит.

На всякий случай попробовал выполнить все эти запросы в SQL-Plus, результаты те же.
07.08.2007 17:35
inna
 
У меня у supermag стоит администратор и администратор аналитики. Как по умолчанию. К карточкам если зайти в Супермаг доступа нет. Однако из навигатора и плюса твой апгрейд проходит без ошибок.
07.08.2007 17:36
Pyatak
 
Подключившись к базе под обычным юзером и посмотрев схему supermag, я не нашел там таблицы smcardassort! Но как тогда клиент SM может получить эти данные? Может у нее какой-то другой псевдоним?
07.08.2007 17:40
inna
 
В принципе мне все равно конечно. но ИМХО - ты не туда копаешь. Нормально все такие изменения проходят через пользователя Supermag. Это владелец схемы и у него право на изменение таблиц.
07.08.2007 17:41
Pyatak
 
Цитата:
inna У меня у supermag стоит администратор и администратор аналитики. Как по умолчанию. К карточкам если зайти в Супермаг доступа нет. Однако из навигатора и плюса твой апгрейд проходит без ошибок.
Вошел в Плюс под supermag'ом. Вот результат:
Код:
SQL*Plus: Release 9.2.0.7.0 - Production on Втн Авг 7 17:34:38 2007

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.


Присоединен к:
Oracle9i Enterprise Edition Release 9.2.0.7.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.7.0 - Production

SQL> UPDATE supermag.smcard SET shortname='xxx' WHERE article='000084';
UPDATE supermag.smcard SET shortname='xxx' WHERE article='000084'
                *
ошибка в строке 1:
ORA-20506: Нет прав на 'Карточки складского учета'
ORA-06512: на  "SUPERMAG.CORE", line 268
ORA-06512: на  "SUPERMAG.OFFICE", line 228
ORA-06512: на  "SUPERMAG.OFFICE", line 251
ORA-06512: на  "SUPERMAG.OFFICE", line 279
ORA-06512: на  "SUPERMAG.SMCARDCHECKAUXROLES", line 4
ORA-06512: на  "SUPERMAG.SMCARDCHECKAUXROLES", line 26
ORA-04088: ошибка во время выполнения триггера 'SUPERMAG.SMCARDCHECKAUXROLES'
07.08.2007 17:54
inna
 
Тогда у меня только один вариант. У меня 1,024,6 сп2. Попробовала на девяточной базе и на восьмерочной, с кавычками и без, в навигаторе и плюсе - у меня триггер не срабатыват. В принципе он отключается, что конечно не самый красивый вариант. а под обычным пользователем доступ есть к ассортиментам?
07.08.2007 17:59
kadr
 
Ребята у артикула поле строковое, все изменения нужно делать под supermag`ом (моё ИМХО), в данном случае если попытаться найти ошибку среди стандартных Оракловых, то вам это не удастся, т.к. эта ошибка именно СуперМага. Лечится так
на время изменения карточек лучше выгнать всех чтоб кто ненароком не залез исправлять.
перед изменением карточек
Цитата:
ALTER TRIGGER smcardcheckauxroles DISABLE
Цитата:
тут необходимы работы по изменению
после изменения карточек
Цитата:
ALTER TRIGGER smcardcheckauxroles ENABLE
07.08.2007 18:00
Pyatak
 
Цитата:
inna Тогда у меня только один вариант. У меня 1,024,6 сп2. Попробовала на девяточной базе и на восьмерочной, с кавычками и без, в навигаторе и плюсе - у меня триггер не срабатыват. В принципе он отключается, что конечно не самый красивый вариант. а под обычным пользователем доступ есть к ассортиментам?
Вот именно, что под обычным пользователем я не могу прочесть таблицу smcardassort, но могу модифицировать карточку, а под supermag'ом не могу модифицировать карточку, но зато могу прочесть таблицу smcardassort.
07.08.2007 18:00
inna
 
Все таки интерсно - должен триггер срабатывать или нет.
07.08.2007 18:02
kadr
 
Цитата:
inna Попробовала на девяточной базе и на восьмерочной, с кавычками и без, в навигаторе и плюсе - у меня триггер не срабатыват.
Если он действительно не срабатывает, то нужно с этим разбираться, так не должно быть. Триггер трудится на уровне базы и ему пофигу какой приблудой правится таблица на которую он повешен
07.08.2007 18:03
Pyatak
 
kadr, допустим всё получилось. Тогда остается вопрос, как работает клиент СМ? Как он получает данные из таблицы smcardassort имея только учетные данные обычного пользователя?
07.08.2007 19:23
YuraZ
 
Ну чего вы страдаете?
1. У inna явно для должности "Администратор БД" даны права на карточки товаров. Достаточно зайти в модуль Администратора и убедиться в этом. Поэтому у нее и не ругается.
2. Клиент СМ доступа к таблице smcardassort явно не имеет. Он получает ассортимент через какую-то вьюху. Точно какую не скажу - лень смотреть.
3. При изменении ассортимента из под клиента СМ так же запускается какя-то хранимая процедура/функция (или несколько).
08.08.2007 08:55
inna
 
Цитата:
YuraZ Ну чего вы страдаете?
1. У inna явно для должности "Администратор БД" даны права на карточки товаров. Достаточно зайти в модуль Администратора и убедиться в этом. Поэтому у нее и не ругается.
2. Клиент СМ доступа к таблице smcardassort явно не имеет. Он получает ассортимент через какую-то вьюху. Точно какую не скажу - лень смотреть.
3. При изменении ассортимента из под клиента СМ так же запускается какя-то хранимая процедура/функция (или несколько).
Inna уже писала что у Supermaga прав на карточки нет. И она знает как посмотреть права - не надо уж совсем за дундочку держать. Второй год 47 баз тащит - уж чего то имеет в голове. Внимательнее лучше бы ветку читал. И что значит явно не имеет? Ты запукал update? У тебя ругается? Я пробовала и на офисной базе( в которой могут быть огрешности) и на совсем новой магазинной. Ошибка не появляется.
08.08.2007 09:31
OlegON
 
Не успеваю тут с вами по полной пофлудить, но суть в разграничении прав на уровне 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
OlegON
 
Да, в ответ топикстартеру, я бы на твоем месте работал бы из под supermag, поскольку данные в его схеме и триггер тебе по любому придется отключать, если не хочешь заморачиваться с регистрацией подключения.
08.08.2007 11:01
YuraZ
 
Цитата:
inna Inna уже писала что у Supermaga прав на карточки нет. И она знает как посмотреть права - не надо уж совсем за дундочку держать. Второй год 47 баз тащит - уж чего то имеет в голове. Внимательнее лучше бы ветку читал. И что значит явно не имеет? Ты запукал update? У тебя ругается? Я пробовала и на офисной базе( в которой могут быть огрешности) и на совсем новой магазинной. Ошибка не появляется.
1. Ну я не хотел никого обидеть.
2. "Явно не имеет" - именно это и означает. Т.к. распределение прав пользователей СМ идет на уровне вьюх. Это, естественно проще. И изменение структуры запроса во вьюхе никаким боком не влияет на права. Достаточно запустить SQL Monitor и станет видно, что при просмотре карточки данные выбираются именно из вьюх.
3. Update естественно запускал. И не раз. Так вот, пока не дашь supermag-у права на карточки, срабатывает именно этот тригер. Причем и у меня и наших клиентов.
08.08.2007 11:56
Pyatak
 
Цитата:
OlegON Да, в ответ топикстартеру, я бы на твоем месте работал бы из под supermag, поскольку данные в его схеме и триггер тебе по любому придется отключать, если не хочешь заморачиваться с регистрацией подключения.
Хорошо, допустим я так и поступлю. Тогда у меня возникает вопрос, что будет если в промежутке после выключения триггера и до его включения произойдет сбой (вылетит программа, выключится компьютер)? Триггер же так и останется отключенным. Какие будут последствия? 2) Триггеры включаются/выключаются в рамках транзакций? И последнее, всё это хорошо, но я так и не увидел ответа на вопрос, как клиент СМ узнает о том, какие товары в каком ассортименте находятся?
08.08.2007 12:03
OlegON
 
1) Беда будет, я обычно регламентирую такие работы без пользователей, подконтрольно, потому, как кто-то без этого триггера параллельно может внести изменения в таблицу. 2) В рамках всей базы 3) Думаю, стОит поверить YuraZ, поскольку ценность этой информации минимальна, чтобы ее проверять.
08.08.2007 12:43
Pyatak
 
Не думаю, что стОит поверить 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
kadr
 
Цитата:
Pyatak Не думаю, что стОит поверить YuraZ'у, иначе клиент СМ не посылал бы следующую серию запросов к базе для того чтобы показать мне товары из ассортимента '3.' внутри которого карточка с артикулом 019416
А ты можешь сказать что ты именно хочешь узнать? Может тебе посмотреть в сторону прав и ролей доступных пользователю?
08.08.2007 14:45
Pyatak
 
Цитата:
kadr А ты можешь сказать что ты именно хочешь узнать? Может тебе посмотреть в сторону прав и ролей доступных пользователю?
Собственно, мне надо сделать две простые вещи:
1) отобрать карточки из ассортимента
2) модифицировать короткое название отобранных карточек
с тем условием, что сделать это, подключившись обычным пользователем, так чтоб никого из базы не выгонять и сделать это безопасно. Всего-то.
Да, и при этом не добавлять никаких дополнительных разрешений в базу, т.е. делать так, как делает клиент СМ.


Опции темы


Часовой пояс GMT +3, время: 03:34.

 

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