|
|
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
Есть MS SQL сервер, пользователь (доменный) подключается к нему через ADP, на таблицу (например Table1) у него есть все права доступа (Select, Update и т.д.) - этот пользователь номально работает с ней, добавляет, изменяет, удаляет. Рядом такая же таблица (пусть будет Table2), с такими же правами для этого пльзователя и глюк такой: открывает он ее, видит что в ней, редактирует какое-нибудь поле в строке, переходит на другое поле в этой же строке - все нормально, а как только переходит на другую строку, то данные, которые он изменил, возвращаются в исходное значение. Т.е. не вылазит никаких сообщений, что типа нельзя изменять и т.п. (в других таблицах, если нельзя и попробовать изменить, появляется сообщение про "нельзя" :) ) Что делать и где копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 08:58:27 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
Хм. Триггеры на табле 2 есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 09:18:08 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
paparomeХм. Триггеры на табле 2 есть? Есть (БД не я делал, поэтому не знаю зачем они там). ALTER TRIGGER T_Del ON dbo.Table1 FOR DELETE AS declare @@result int set @@result = 1 if exists(select * from deleted where datediff(day, Дата, getdate()) > 7) set @@result = 0 if @@result = 0 and current_user <> 'dbo' begin print 'Удаление запрещено!' rollback transaction end ALTER TRIGGER T_Ins ON dbo.Table1 FOR insert AS declare @@result int set @@result = 1 if exists(select * from inserted where datediff(day, Дата, getdate()) > 7) set @@result = 0 if @@result = 0 and current_user <> 'dbo' begin print 'Добавление запрещено!' rollback transaction end ALTER TRIGGER T_Upd ON dbo.Table1 FOR UPDATE AS declare @@result int set @@result = 1 if (exists(select * from deleted where datediff(day, Дата, getdate()) > 7)) or (exists(select * from inserted where datediff(day, Дата, getdate()) > 7)) set @@result = 0 if @@result = 0 and current_user <> 'dbo' begin print 'Изменение запрещено!' rollback transaction end Но сообщений никаких не показываетсЯ, когда пользователь добавляет или удаляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 10:21:37 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
вместо print исп. raiserror('Дата не должна быть меньше последней даты архивации.',16,1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 10:26:14 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
И после AS во всех триггерах поставь SET NOCOUNT ON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 10:36:07 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
paparomeИ после AS во всех триггерах поставь SET NOCOUNT ON Поставил SET NOCOUNT ON - не помогает. Заменил Print на raiserror - начало появляться сообщение что нельзя писать:) Но.... Увидал одну фишку, которая, как я понимаю, сводит на нет все предыдущие старания:) Пользователь не может редактировать данные только до 16.06.04, т.е. все, что было добавлено в таблицу позже - редактируется как угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 11:13:17 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
авторУвидал одну фишку, которая, как я понимаю, сводит на нет все предыдущие старания:) Пользователь не может редактировать данные только до 16.06.04, т.е. все, что было добавлено в таблицу позже - редактируется как угодно. Судя по триггерам, обычному пользователю разрешено править записи в пределах одной недели (сегодня это [дата]>16.06.2004) + Я что-то не понял, вы у нас хотите узнать, зачем в вашей таблице такие триггеры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 11:19:45 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
paparome Судя по триггерам, обычному пользователю разрешено править записи в пределах одной недели (сегодня это [дата]>16.06.2004) + Я что-то не понял, вы у нас хотите узнать, зачем в вашей таблице такие триггеры? :) Нет, это не моя таблица :) Не я ее писал и в подобных делах я еще плохо разбираюсь. Значт триггер дает доступ только к определенным дням? Правильно? Т.е. его надо просто удалить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 11:26:07 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
мне страшно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 11:45:40 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
авторЗначт триггер дает доступ только к определенным дням? Правильно? Т.е. его надо просто удалить? Эти 3 тириггера "дают доступ" к "определенным" дням (минус неделя от текущего момента) для не привелигированных пользователей (Админ могет все править - что тоже видно в триггере) Насчет удалить. Не знаю - наверное триггеры зачем-то писались, значит для их существования есть какой-то смысл, может прежде чем их удалить узнать у разработчика (бывший программист) или заказчика (начальство) на кой так сделано было. А если вы их удалите, тогда все будет и добавляться и удаляться без всяких проблем - если вам это надо, тогда удаляейте (но я этого не советовал!!!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 11:58:37 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
АХТУНГ!!! мне ещё страшнее ища Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 12:03:45 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
paparome Эти 3 тириггера "дают доступ" к "определенным" дням (минус неделя от текущего момента) для не привелигированных пользователей (Админ могет все править - что тоже видно в триггере) Насчет удалить. Не знаю - наверное триггеры зачем-то писались, значит для их существования есть какой-то смысл, может прежде чем их удалить узнать у разработчика (бывший программист) или заказчика (начальство) на кой так сделано было. А если вы их удалите, тогда все будет и добавляться и удаляться без всяких проблем - если вам это надо, тогда удаляейте (но я этого не советовал!!!) Большое спасибо! Чуть позже я попробую. А на счет обратиться к заазчику или разработчику - у нас шеф где-то по блату достал эту базу, заставил меня всю ее излазить, раздать пользователям и самое, что интересное - разработчиков давно уже в живых, по моему, нет. Т.е. никто не знае откуда эта база :) Вот такие пироги:( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 12:23:35 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
с такими знаниями просто нельзя пытаться что либо менять. подучись даля начала а потом кромсай. очень напоминает когда с ломиком в часики если этот триггер кто то сделал значит этот жжж неспроста, значит это методика работы с программой требует чтоб так было нужно выяснить алгоритм работы программы - кто создает триггер и зачем а не крушить ее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 16:22:18 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
2 АлексейК Я тоже так думаю (о чем и говорил), но товарищ/господин (не нужное зачеркнуть), решил что надо покромсать, ибо спросить не у кого - разработчики "вне зоны действия сети" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 16:30:06 |
|
||
|
ADP, MS SQL и все такое
|
|||
|---|---|---|---|
|
#18+
paparome2 АлексейК Я тоже так думаю (о чем и говорил), но товарищ/господин (не нужное зачеркнуть), решил что надо покромсать, ибо спросить не у кого - разработчики "вне зоны действия сети" :) ну уж отгда хотябы создать "дубль" системы (типа, работающий протоитп) и на нём поэкспериментировать Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2004, 17:29:46 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32570970&tid=1673668]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
219ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 507ms |

| 0 / 0 |
