powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Variant, UDF и Instead-триггеры, цепляемые ко view
21 сообщений из 21, страница 1 из 1
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001428
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Недавно я получил письмо, в котором Андрей Гордиенко предлагает обсудить новые возможности и новые проблемы MS SQL Server-2000. Вот что он пишет:

...Лично меня очень заинтересовали Variant, UDF и Instead-триггеры, цепляемые ко взгляду (от автора рассылки: на сколько я понял, имеется ввиду представление - view). Для меня эти три возможности, продекларированные для новой версии, в корне меняют подходы к тем проблемам, которые я пытаюсь решить в версии 7.0 с помощью совершенно неприспособленных для этого методов. Хочу найти единомышленников из числа тех, для кого переход на версию 2000 является жизненной необходимостью. Рассчитываю на отклики тех, кто её пощупал и смог обойти подводные камни, на которые я наткнулся.
Я пытался сделать тестовую установку, и сразу столкнулся с множеством проблем, о которых и хочу предупредить потенциальных или фактических собратьев по несчастью.
Я создал таблицу и взгляд, который выбирал некоторую часть записей из этой таблицы и одновременно ограничивал набор полей только "рабочими" полями (часть полей используется для журнализации и прочих служебных целей, с которыми имеют дело только триггеры). Ко взгляду я прицепил три Instead-триггера - на удаление, вставку и изменение. После чего обнаружил следующее. При попытке править, удалять или вставлять записи во взгляд через Query Analyzer триггеры отрабатывают - все происходит, как задумано, душа поет. Но стоит попробовать делать эти операции через OLEDB из какой-либо клиентской программы, либо из Enterprise Manager (Open - All rows), который, кстати, работает через ODBC - так же как и Query Analyzer, записи прямиком попадают в базовую таблицу, Instead-триггеры не запускаются, словно их вообще не существует. На конференции на sql.ru мне ответили, что, скорее всего, проблема в сетевых библиотеках. Хотелось бы получить какое-нибудь дальнейшее развитие этой темы.
Еще один глюк. Сделал UDF, которая вызывается в качестве значения Default для поля таблицы. В тексте этой UDF вызывается ниладическая функция SYSTEM_USER. При работе из Query Analyzer SYSTEM_USER возвращает 'sa', а при работе из EM эта же функция возвращает сетевое имя в виде 'Domain_name\User_name', хотя в EM я зарегистрировал сервер тоже под 'sa'. Полагаю, тут тоже подпакостили сетевые библиотеки.
Дальше больше (все что дальше, касается только программистов, использующих Delphi 5 + ADO). Наткнувшись на перечисленные глюки, я деинсталлировал MS SQL Server 2000. При попытке продолжить работу над программами, которые я раньше писал в Delphi+ADO, стала выскакивать ошибка "... BOF or EOF..." при попытке открыть или закрыть любой источник записей, в котором записей не содержится (просто открыть, больше ничего). Переустановка MDAC версий 2.1 и 2.5 не помогла. Оказалось, что MDAC 2.6, который устанавливается вместе с MS SQL Server 2000, БЕССМЕРТЕН. Удалить его уже невозможно. А ошибка возникает из-за несовместимости ADO-компонентов Delphi с этой версией. На сайте Borland выложен патч, который лечит данную ошибку. Я его скачал и установил. "... BOF or EOF..." исчезла. Однако, события ADO-компонентов OnDeleteError, OnPostError и аналогичные перестали нормально работать. Конкретно, если в этих событиях сделано присвоение Action:=daAbort, это не выводило программу в нормальное русло с отменой операции как положено тому быть, программа зацикливалась с постоянной выдачей одного и того же сообщения об ошибке. В результате для того, чтобы вернуться к нормальной работе, мне пришлось переустанавливать на своем компьютере систему - потом уже ставить MDAC более ранней версии.
Возможно, я не нашел каких-то реально существующих менее болезненных путей решения описанных выше проблем. Очень хочется узнать мнение собратьев.

С уважением,
Андрей Гордиенко
hydro@corbina.ru
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001432
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказка про белого бычка, уже здесь обсуждавшаяся. Ну не переписали мужики курсорную библиотеку к OLE DB-провайдеру, ну что ж теперь, повеситься что ли. Делайте не rs.AddNew, a cn.Execute("insert ...
Описанное поведение с system_user не подтвердилось. У меня все работает нормально.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001440
Fompro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу UDF. Возвращаемое значение в виде Domain_name\User_name наблюдалось и в QA и в EM только при Windows authentication.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001462
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ине удалось снести MDAC 2.6 менее радикально: просто грохнул каталои C:\Program Files\Common Files\SYSTEM\ADO, ...\Msadc, ...\ole db и переинсалил MDAC 2.5.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001739
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Дед маздай.
А что у тебя с курсорной библиотекой все в порядке? И Instead-триггеры нормально работают? Может, зашлешь библиотеку на мыло?
Вот адрес:
hydro@corbina.ru

Насчет cn.Execute - я не понял, ты предлагаешь переписать все ADO-компоненты (речь идет об ADO в Delphi5), которые стандартно используются для работы с MS SQL? Или отказаться от использования готовых компонентов и лепить свои? Можно, кончено, обойтись и без компонентов, и даже без языка высокого уровня (колупать на асемблере), и даже без SQL-сервера... Но все-таки хочется не громоздить себе проблемы, а иметь возможность быстро и эффективно их решать.
Только одна проблема - невозможность полноценного использования Enterprice Manager - разве эта проблема такая маленькая, что на нее можно махнуть рукой? Без обид. Предлагаю помогать друг другу (по возможности), а не просто отмахиваться.
И еще. Реализация бизнес-логики на сервере преследует не одну, а множество целей. Одна из них - обеспечить одинаковую обработку и механизмы авторизации при доступе к данным ИЗ РАЗНЫХ ПРИЛОЖЕНИЙ И РАЗНЫМИ СПОСОБАМИ. Так что, на это тоже махнуть рукой? А если какой юзер полезет в базу из WORD-а, не установив нужных библиотек и не прочитав предварительно сообщения на данной конференции? А если он просто полезет в базу с помощью Enterprise Manager-а (который не работает)?

Несколько туманная (для меня, по крайней мере), присказка относительно белого бычка. На конфе в вопросе была просьба сообщить, у всех ли этот эфект проявляется. По части неполноценности Instead-триггеров было подтверждение, что глючат не только у меня. По SYSTEM_USER были сообщения, что глюк не подтверждается. Не было ни одного сообщения о том, что Instaed-триггеры у кого-то работаю нормально (именно в описанных условиях). Следует ли фразу про бычка понимать так, что у всех все работает нормально, и вопрос поднят на пустом месте?
Кстати, SYSTEM_USER у меня тоже нормально работает, до тех пор, пока его не воткнешь в UDF, которая вызывается в качестве значения по умолчанию в одном из столбцов таблицы. Я не уверен, что сообщения о не подтверждении второго глюка пришли после имитации именно указанных условий для его возникновения.

Для ясности. Я - автор поднятого вопроса.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001889
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу вопроса про установленные у меня курсорные библиотеки и того, что я предлагаю. Мне казалось, что это ясно из предыдущих сообщений, но тем не менее. Курсорные библиотеки у меня такие же. Соответственно, эффект с instead-of триггерами воспроизводится как он есть. В ближайшее время от него никуда не деться. Вам не принесут завтра на дом dllину с hotfixом. Пока этот баг не исправлен, я предлагаю не скулить, а искать обходные пути решения. Если работа с курсорами жестко зашита в Ваших компонентах, а делать руками ничего не хочется, если Вы находите больший смысл в смаковании проблемы, нежели в ее разрешении (хотя бы частичном и неидеальном на данном этапе) - sorry, мой совет не для Вас, можете плакаться дальше.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001898
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толи я невнятно объяснил суть вопроса, толи меня невнятно поняли. Суть вопроса состоит в следующем. Выявлены два неких бага. Необходимо определить причину их возникновения - либо виноваты кракоделы, либо MS. Если первое, то проблема устраняется установкой нормальной версии MS SQL-2000. Если второе, то проблема не устраняется вовсе (по крайней мере, до выхода SP, патчей e.t.c.).
Теперь по сути. Совершенно неожиданно для себя я нашел ответ на перечисленные вопросы. Мне подвернулась версия MS SQL Server-2000, в которой не проявляется ни первый, ни второй баг. Так что, решение сей проблемы сводится к установке сервера с нормального дистрибутива вкупе с клиентскими утилитами. Огорчает то, что ответ был найден НЕ на данной конференции.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32001953
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Great! Так и запишем. MS вычеркивает ложную тревогу из списка bugs to fix in SP1. Если кто-нибудь еще начинает выступать по поводу этих граблей, растолковать оному, что сие не баг, но коряво крякнутый дистрибутив. При необходимости сослаться на А.Гордиенко (hydro@corbina.ru).
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32002028
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя ли ссылочку? Я полазил по сайту MS, но не обнаружил ни сообщения о BUG-е, ни SP1 для MS SQL SERVER-2000. Кстати, не вы ли пишите сервиспаки для MS ?
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32002041
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Летом. Во 2-й половине, я думаю.
Если я еще не совсем забыл русский, то "пишИте" - это призыв.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003164
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Garya, если у Вас еще не пропало желание выявлять баги, Вы можете поучаствовать в программе тестирования Service Pack 1 к SQL Server 2000, для чего в ближайшие 2 дня отправьте по адресу rusdev@microsoft.com следующую информацию (на английском языке):

First Name:
Last Name:
Company:
Country:
Address 1:
City:
Postal Code:
Phone Number:
Internet Email Address:
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003230
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я с удовольствием. Но поскольку в качестве официального участника я новичок , прошу подсказать - участвовать может кто угодно или только те, кто официально приобрел MS SQL Server-2000?
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003265
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Официально, Garya. П.ч. все иное не есть приобретение, а просто демонстрирует неуважение к разработчикам, создающим не самую плохую, в общем-то, вещь. Sorry, я не хотел бы читать мораль и затрагивать здесь вопросы, отличные от программных. Хотя это действительно так.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003293
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью с Вами согласен. Однако, MS позволяет себе большие вольности по отношению к пользователям. В частности, продажа за деньги продуктов, которые по глючности не всегда дотягивают до бета-версии. Если уж тратить деньги, то не на кота в мешке. Предпочитаю сначала его из мешка вынуть и пощупать. А уже после покупать, если выяснится, что это действительно кот, а не дохлая крыса.
Не смотря на прекрасные функциональные возможности Access-2000, я продолжаю использовать Access-97 просто потому, что в A2K не просто много, а НУ ОЧЕНЬ МНОГО глюков. Имеет ли смысл его покупать, если даже за бесплатно использовать не всегда захочешь?
Я предвижу ваши возражения о том, что официальные пользователи имеют техническую поддержку. Однако, сроки ожидания этой поддержки (в плане исправления выявленных багов) могут превысить чашу терпения руководства, которому проект нужно было сделать еще вчера.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003304
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выходит если я при тестировании официальной пробной версии продукта обнаружу глюк, мне о нем легче сообщить ближайшим конкурентам, чем разработчику. Тогда наверное быстрее исправят. А я ничего в этом случае противозаконного и аморального не сделаю.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32003318
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, я этого не говорил. Хотя такие приемы, IMHO, вполне допустимы, только с предварительным сообщением разработчику и лишь после того, как убедишься, что разработчик не горит желанием устранять глюки. Не знаю как вы, а я уже раз обжегся. Купил 1С:Предприятие. Официально. А в нем багов оказалось море. Полгода потратил на слаломление вокруг них. Сообщал о них в 1С. Информацию принимали к сведению, и ничего более. Какие-то мелочи подправляли. А потом я обнаружил баг в языке запросов (видать, я на баги везучий ) - это было последней каплей. Плюнул и стал писать новую программу. Кстати, из 12 багов выявленных мной в версии 7.5 в версии 7.7 устранены только два (наименее существенных). Конечно, 1С - не MS, но стиль схожий.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32007405
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Дед Маздай. Не везет, так не везет. Один мой знакомый принес дистрибутив, и сказал, что он максимально пропатченный из каких-то дебрей самого MS. Простенький тест показал, что баг с Instead-триггерами не проявляется. Это было месяца три назад. Однако, сегодня баг все-таки опять проявился. Я пришел к выводу, что проявляется он нестабильно. Причин, от которых зависит его проявляемость, пока не нащупал.
To All. Избегайте делать DBGrid-подобный интерфейс на VIEW, построенных на нескольких таблицах. При попытке удаления записи из VIEW, которая должна была привести к удалению записи из главной таблицы я получил удаление из нескольких таблиц одновременно. Даже из той, которая фигурирует в подзапросе (!!!). INSTAED-триггеры не спасают по причине вышеозначенного бага - сетевые библиотеки сами формируют команды на работу с таблицами в обход VIEW.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32007527
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Небольшое дополнение по поводу VIEW, построенного на нескольких таблицах. Как было сказано выше, трабл обходится выдачей команд "delete from MyView where ID=..." и прицепливанием ко view instead-триггеров (иначе будет ругаться, что не может выполнить такую команду, поскольку view построен на нескольких таблицах).
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32007581
Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХВАТИТЬ .....!!!!!!!!!

ГЛЮК, ГЛЮК, МАСТ ДАЙ.
ХЕЛП ЧИТАТ НАДО.

CREATE VIEW ... [ WITH < view_attribute > [ ,...n ] ] AS

< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }

VIEW_METADATA

Specifies that SQL Server will return to the DBLIB, ODBC, and OLE DB APIs the metadata information about the view, instead of the base table or tables...

Вот и ВСЁЁЁЁЁЁЁЁ, и заработают ваши триггеры на взгляды!!!
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32007585
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соблюдайте спокойствие PLS!, а то ветку жалко закрывать.
...
Рейтинг: 0 / 0
Variant, UDF и Instead-триггеры, цепляемые ко view
    #32007590
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir! Все работает! Я тебя люблю! Где ты раньше был?!... Короче, спасибо необъятных размеров.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Variant, UDF и Instead-триггеры, цепляемые ко view
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]