16.06.2006, 11:29 | #1 |
Участник
|
База для просмотра в трехзвенке
Здравствуйте уважаемые знатоки !
Подскажите пожалуйста, как настроить базу, в которой можно только просматривать документы, отчеты и т.д. но вносить изменения не разрешалось бы. Поясню некоторые моменты: -эта база является копией рабочей (обновляется каждую ночь) -права у пользователей как в рабочей Поменял в SQL свойства базы только для просмотра. Включил АОС. При вхождении в базу она долго ругается на то, что база только для просмотра, а потом выкидывает. Как это победить? или может быть есть какие-нибудь обходные пути? За ранее благодарен.
__________________
Александр |
|
16.06.2006, 11:35 | #2 |
Модератор
|
Запиши таблицы, на которые ругается, и дай к ним доступ.
Или переделай права и заливай права каждый раз Мы решали эту задачу 1м способом. С Уважением, Георгий. |
|
16.06.2006, 12:20 | #3 |
Участник
|
Цитата:
Сообщение от George Nordic
Запиши таблицы, на которые ругается, и дай к ним доступ.
Или переделай права и заливай права каждый раз Мы решали эту задачу 1м способом. С Уважением, Георгий. Спасибо за подсказку.
__________________
Александр |
|
16.06.2006, 12:54 | #4 |
Administrator
|
Вопросик возник.... Как эта фраза
Цитата:
Сообщение от George Nordic
Запиши таблицы, на которые ругается, и дай к ним доступ.
Цитата:
Сообщение от tolstjak
-эта база является копией рабочей (обновляется каждую ночь)
__________________
Возможно сделать все. Вопрос времени |
|
16.06.2006, 13:11 | #5 |
Модератор
|
Цитата:
Поменял в SQL свойства базы только для просмотра
Георгий. |
|
16.06.2006, 14:28 | #6 |
Участник
|
Цитата:
Сообщение от George Nordic
Там не права пользователей ограничкны, а на уровне всей базы.
Георгий. Точно. В свойствах базы устанавливаю "read only". Не подскажите какие таблицы необходимо открыть для редактирования, а то система указывает на таблицу SQLSYSTEMVARIABLES? Я открыт на нее доступ, но система все равно на нее ругается. По двух звенке вроде молчил (не ругается), но главное меню не открывается. За ранее благодарен
__________________
Александр |
|
16.06.2006, 15:06 | #7 |
Administrator
|
Цитата:
Сообщение от George Nordic
Там не права пользователей ограничкны, а на уровне всей базы.
Очевидно - что дать доступ read-only на базу можно и ручками а вот для таблиц придется писать скриптик. 2tolstjak: Для создания перечня таблиц придется полность повторить Вашу ситуацию (если конечно у кого-то это уже не настроено). Поэтому могу только посоветовать ручками копать. Мы у себя такую базу не запрещали на запись - ибо какая разница чего туда запишут если база завтра обновится? А в конфигурационный файлик вставили сообщение что это тестовая база и любые сделанные изменения - не будут отражены в рабочей базе. В общем так.
__________________
Возможно сделать все. Вопрос времени |
|
16.06.2006, 15:08 | #8 |
Administrator
|
Кстати - по поводу SQLSystemVariables - очевидно доступ придется давать как учетной записи пользователя (группе в которую он входит) так и учетной записи АОСа (от имени которой он запущен) в трехзвенке. А Вы похоже дали доступ только учетной записи пользователя. Поэтому в двухзвенке все работает а в трехзвенке не хочет.
Может я конечно ошибаюсь - это одна из версий - на мой взгляд. По логике АОСу вообще можно дать права владельца - как говорится ему-то не жалко. Но если причина не в этом - то тогда с ходу не готов сказать в чем проблема с доступом к таблице
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 16.06.2006 в 15:10. |
|
16.06.2006, 15:19 | #9 |
Участник
|
Если это тонкий клиент, то права пользователя по барабану. К б/д цепляется AOS
__________________
Axapta v.3.0 sp5 kr2 |
|
16.06.2006, 16:36 | #10 |
Участник
|
А приложение отдельное на эту базу смотрит? или то же что и на рабочую?
Если отдельное, то проблему можно решить на уровне приложения, запретив редактирование там. С уважением, itfs. |
|
19.06.2006, 14:20 | #11 |
Участник
|
Цитата:
Сообщение от itfs
А приложение отдельное на эту базу смотрит? или то же что и на рабочую?
Если отдельное, то проблему можно решить на уровне приложения, запретив редактирование там. С уважением, itfs.
__________________
Александр |
|
19.06.2006, 14:58 | #12 |
Administrator
|
гым ... приложение-то отдельное - но также "регулярно копирующееся с рабочего" - так?
2itfs - Вы имели в виду отдельно кодить чего-то? 2tolstjak - приложение - "регулярно копирующееся с рабочего"?
__________________
Возможно сделать все. Вопрос времени |
|
19.06.2006, 17:15 | #13 |
Участник
|
Цитата:
Сообщение от sukhanchik
гым ... приложение-то отдельное - но также "регулярно копирующееся с рабочего" - так?
2itfs - Вы имели в виду отдельно кодить чего-то? 2tolstjak - приложение - "регулярно копирующееся с рабочего"?
__________________
Александр |
|
19.06.2006, 17:59 | #14 |
Участник
|
Цитата:
Сообщение от tolstjak
Разумеется регулярно.
Да, имел ввиду модифицировать код некоторым компактным образом .... С уважением, itfs. |
|
19.06.2006, 18:15 | #15 |
Administrator
|
В общем резюмируя и обобщая:
Получаются пока 2 пути решения задачи: 1. Создание SQL-скриптика - который устанавливает доступ на некий перечень таблиц. (таблицы в перечне - к примеру полный доступ, а остальные - только чтение) Перечень таблиц придется определить самостоятельно так сказать экспериментальным путем. 2. Собсно отказ от такой постановки задачи (пересмотр ее постановки). (К примеру разрешать редактировать)
__________________
Возможно сделать все. Вопрос времени |
|
19.06.2006, 19:45 | #16 |
Участник
|
Для полноты ощущений.
3. Пишем и выполняем страшный вирус типа: Код: treeNode _treeNode; treeNode _treeNodeTab; xInfo xInfo; UtilIdElements UiE; str properties = ""; ; xInfo = new xInfo(); _treeNode = xInfo.rootNode(); _treeNode = _treeNode.AOTfindChild("Data Dictionary"); _treeNode = _treeNode.AOTfindChild("Tables"); while select id, name from UiE group by id, name where UiE.recordType == 44 && !(UiE.name like 'Tmp*') { _treeNodeTab = _treeNode.AOTfindChild(UiE.name); if (_treeNodeTab) { properties = _treeNodeTab.AOTgetProperties(); properties = setProperty(Properties, 'MaxAccessMode', 'View'); _treeNodeTab.AOTsetProperties(Properties); _treeNodeTab.AOTsave(); } } PS Не претендую на то, что вариант из лучших. С уважением, itfs. |
|
|
За это сообщение автора поблагодарили: sukhanchik (2). |
20.06.2006, 13:47 | #17 |
Участник
|
Цитата:
Сообщение от itfs
Для полноты ощущений......
... И через пару минут у вас read-only приложение. Только не забудьте сохранить все что вам дорого . PS Не претендую на то, что вариант из лучших. С уважением, itfs. Большое спасибо за джоб. Немного подправили и запустили на базе. В итоге сообщил 1 ошибку и 175 предупреждений, но ничего не показал. Как мы поняли, он делает у части таблиц свойство MaxAccessMode - View. Работоспособность всего приложения и базы не проверяли, но на вскидку все работает. Понравилось. Как теперь это запускать еженочно без запуска системы? Или может быть преобразовать в SQL job?
__________________
Александр |
|
21.06.2006, 10:04 | #18 |
Участник
|
Ошибки и предупреждения - это особенности ваших таблиц, которые job потрогал, отчего они перекомпилировались. Если вы с этим живете на боевой, значит, ничего страшного.
Мысль насчет sql-job-а или не до конца понял или не приветствую, т.к. приложение ничего не будет знать о том, что таблицы недоступны на изменение, и вы получите кучу мусора на экране. Это гораздо менее красиво. Возможно как дополнение. Запуск этого job-а каждую ночь ... вы каждую ночь перекладываете приложение? Впрочем, раз так заведено, наверное придется организовать свое com-подключение, которое запустит job после обновление приложения. Где-то здесь эта проблема обсуждалась вплоть до того, что-то выкладывали dll, которая вам поможет ... поищите. С уважением, itfs. |
|
21.06.2006, 10:28 | #19 |
Участник
|
Еще раз спасибо за Job
Исправили только строчку Цитата:
UiE.name like 'Tmp*'
new DictTable(UiE.id).isTmp() |
|