Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не возникает ошибка? [D7, MSSQL]


Страницы:   1 2

Bless ©   (2006-11-14 11:22:00) 

ситуация :
есть

cmd: TADOCommand;
cmd.CommandText = 'exec sp_executesql N'DELETE FROM t1 WHERE 1=0 INSERT INTO t2 (kod) values (1)''

Причем в свойствах ADOConnection стоит пользователь, имеющий все права на таблицу t1 и не имеющий никаких прав (ни SELECT, ни INSERT, ни DELETE) на таблицу t2.

по клику на кнопку выполняется

cmd.execute.


Вопрос: почему не выскакивает ошибка "нет права на INSERT"?

Примечание (нужно оно, не нужно, не знаю, на всякий случай напишу):
Если заменить:
-   DELETE FROM t1..., INSERT INTO t2...
на
"SELECT... FROM t1..., SELECT... FROM t2..."

-   TADOCommandна TADODataset

-   cmd.executeна cmd.open; cmd.nextRecordset;

то на строчке cmd.nextRecordset;словим желаемую ошибку.


ANB   (2006-11-14 11:30:00) [21]

Кистате, я на такую граблю наступал. Если бы ошибок было много ты бы еще увидел, что часть из них пропадает (сравнивать с результатом выполнения в QA)


ANB   (2006-11-14 11:29:00) [22]

Вот такая у MS SQL дебильная логика. Нету у них исключений. Есть только ошибки, которые складываются в некий буфер. Буфер можешь посмотреть после выполнения. А у ADO есть некоторые проблемы при работе с такой извращенной логикой.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо