На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> alter table дает warning, который в Delphi возвращается как raise
    на Дельфи7 через АДО пытаюсь добавить поле в таблицу базы MSSQL2000:
    ExpandedWrap disabled
      with ADOQuery do
         begin
         SQL.Text := 'alter table Table1';
         SQL.Add('add Field123 varchar(255) NULL');
         ExecSQL;
         end;

    Полей в таблице уже много и СКЛ выдает варнинг:
    ExpandedWrap disabled
      Warning: The table 'Table1' has been created but
      its maximum row size (54548) exceeds the
      maximum number of bytes per row (8060). INSERT or UPDATE of a row in this table will fail
      if the resulting row length exceeds 8060 bytes.


    Но в дельфи на строке AdoQuery.ExecSQL вылезает RAISE.

    Т.е. если выполнить этот запрос на самом СКЛе, то поле добавится. Ну и появится это сообщение с предупреждением о превышении кол-ва байт на запись.

    Но почему в дельфи программа останавливается и поле не добавляется?
    Подскажите, как или чем это победить?
    Сообщение отредактировано: Bas -
    Идея пришла в его голову и теперь упорно ищет мозг
      Цитата Voice @
      Но почему в дельфи программа останавливается и поле не добавляется?

      Видимо, потому что компонент так реагирует на warning
      Цитата Voice @
      Подскажите, как или чем это победить?

      Видимо, разве что изменением компонента
      Codero ergo sum
      // Программирую — значит, существую
        Цитата Voice @
        почему в дельфи программа останавливается и поле не добавляется?

        Потомy что Management Studio использует Native SQL а не ADODB..

        Цитата Voice @
        Подскажите, как или чем это победить?

        Из своей программы создай хранимую процедуру, которая добавляет нужное поле.
        Выполни хранимую процедуру из своей программы.
        Мои религиозные убеждения не позволяют мне комментировать код.
        Моё мировоззренье таково: в программе комментария ни одного!
          Цитата MIF @
          Потомy что Management Studio использует Native SQL а не ADODB..

          Точно? Если взять другого провайдера ?
          Цитата MIF @
          Выполни хранимую процедуру из своей программы.

          И это будет правильно. Модификацию параметров таблиц лучше проводить на сервере а не на клиенте, и желательно "выкинуть" ВСЕХ активных пользователей...., а то проблем может быть гораздо больше...
          Сообщение отредактировано: Bas -
          Цель - ничто , процесс - все.
            Цитата Bas @
            И это будет правильно. Модификацию параметров таблиц лучше проводить на сервере а не на клиенте, и желательно "выкинуть" ВСЕХ активных пользователей...., а то проблем может быть гораздо больше...

            Что значит "проводить на сервере"? Залезть на сервер по удаленке? И чем это лучше?

            Может, у ТС что-то типа админской софтины. А она должна уметь манипулировать метаданными без всяких костылей типа хранимок и прочего.
            Сообщение отредактировано: Fr0sT -
            Codero ergo sum
            // Программирую — значит, существую
              Тогда софтину нвдо переписать на .NET языке. SqlConnection также использует NativeSql
              Мои религиозные убеждения не позволяют мне комментировать код.
              Моё мировоззренье таково: в программе комментария ни одного!
                Цитата Fr0sT @
                Что значит "проводить на сервере"? Залезть на сервер по удаленке? И чем это лучше?

                Вообще-то при любых манипуляциях по изменению структуры данных реально работающей БД необходимо отключить всех её юзеров. А то можно и до дедлайна доиграцца.
                Цитата Fr0sT @
                Может, у ТС что-то типа админской софтины. А она должна уметь манипулировать метаданными без всяких костылей типа хранимок и прочего.
                Ага, голимый код на клиентах, а на сервере - ни строчки бизнес-правил и админ парится из...как он там на MS SQL... Даррагая редакция...етс...
                Цитата MIF @
                Тогда софтину нвдо переписать на .NET языке
                Радиус кривизны рук надо постараться к бесконечности приблизить, а не с бубном скакать. Независимо от языка и способа коннекта к БД.
                ...one shot at glory in the crossfire overhead...© JP
                  C бубном можно долго скакать...

                  Думаю что проблема не в "бубне" а в структуре таблиц.
                  Сообщение отредактировано: Bas -
                  Цель - ничто , процесс - все.
                    Цитата LMM @
                    Вообще-то при любых манипуляциях по изменению структуры данных реально работающей БД необходимо отключить всех её юзеров.

                    "Отключить юзеров" и "проводить на сервере" это таки две большие разницы
                    Codero ergo sum
                    // Программирую — значит, существую
                      Цитата Fr0sT @
                      "Отключить юзеров" и "проводить на сервере" это таки две большие разницы

                      С точки зрения телодвижений админа БД - ДА! Я и не спорю.
                      ...one shot at glory in the crossfire overhead...© JP
                        Цитата Fr0sT @

                        "Отключить юзеров" и "проводить на сервере" это таки две большие разницы

                        Таки Да.
                        Ex. Два(3,4,5...) пользователя пытаются проделать
                        Цитата Voice @
                        SQL.Add('add Field123 varchar(255) NULL');
                        ExecSQL;

                        Что будет в результате? DDL будет в шоке если совсем не упадет в "спячку" пытаясь разобраться с юзьверями которые пытались завершить транзакции в старую структуру и с теми которые хотят новую структуру таблицы..
                        DDL операции надобно проводить без активных пользователей.
                        Цель - ничто , процесс - все.
                          А что - кто-то на самом деле реально разрешает юзерам менять структуру базы? :whistle:
                          ...one shot at glory in the crossfire overhead...© JP
                            Цитата LMM @
                            А что - кто-то на самом деле реально разрешает юзерам менять структуру базы?

                            На темплате таблицах можно, но используется ОЧЕНЬ даже очень РЕДКО , почти НИКОГДА. Это - чесать правой рукой левое ухо.

                            Добавлено
                            Хотя... это возможно но надо соблюдать определенные правила.
                            Цель - ничто , процесс - все.
                              Цитата Bas @
                              Это - чесать правой рукой левое ухо
                              Это очень мягко сказано! :D

                              Цитата LMM @
                              Хотя... это возможно но надо соблюдать определенные правила
                              Не-а, я на такое не пойду никогда. Потом гемору не оберёшься.
                              Сообщение отредактировано: LMM -
                              ...one shot at glory in the crossfire overhead...© JP
                                Цитата LMM @
                                Цитата LMM @ Сегодня, 21:20
                                Хотя... это возможно но надо соблюдать определенные правила
                                Не-а, я на такое не пойду никогда. Потом гемору не оберёшься.

                                Тоже этого не понимаю. Но это можно, можно даже создать БД через
                                Цитата Voice @
                                ExecSQL
                                . Зачем? Это другой вопрос.
                                Цель - ничто , процесс - все.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1474 ]   [ 18 queries used ]   [ Generated: 18.06.19, 17:29 GMT ]