![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не возникает ошибка? [D7, MSSQL]
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 есть некоторые проблемы при работе с такой извращенной логикой.