Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.164.141] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
на Дельфи7 через АДО пытаюсь добавить поле в таблицу базы MSSQL2000:
with ADOQuery do begin SQL.Text := 'alter table Table1'; SQL.Add('add Field123 varchar(255) NULL'); ExecSQL; end; Полей в таблице уже много и СКЛ выдает варнинг: 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. Т.е. если выполнить этот запрос на самом СКЛе, то поле добавится. Ну и появится это сообщение с предупреждением о превышении кол-ва байт на запись. Но почему в дельфи программа останавливается и поле не добавляется? Подскажите, как или чем это победить? |
Сообщ.
#2
,
|
|
|
Цитата Voice @ Но почему в дельфи программа останавливается и поле не добавляется? Видимо, потому что компонент так реагирует на warning Цитата Voice @ Подскажите, как или чем это победить? Видимо, разве что изменением компонента |
Сообщ.
#3
,
|
|
|
Цитата Voice @ почему в дельфи программа останавливается и поле не добавляется? Потомy что Management Studio использует Native SQL а не ADODB.. Цитата Voice @ Подскажите, как или чем это победить? Из своей программы создай хранимую процедуру, которая добавляет нужное поле. Выполни хранимую процедуру из своей программы. |
Сообщ.
#4
,
|
|
|
Цитата MIF @ Потомy что Management Studio использует Native SQL а не ADODB.. Точно? Если взять другого провайдера ? Цитата MIF @ Выполни хранимую процедуру из своей программы. И это будет правильно. Модификацию параметров таблиц лучше проводить на сервере а не на клиенте, и желательно "выкинуть" ВСЕХ активных пользователей...., а то проблем может быть гораздо больше... |
Сообщ.
#5
,
|
|
|
Цитата Bas @ И это будет правильно. Модификацию параметров таблиц лучше проводить на сервере а не на клиенте, и желательно "выкинуть" ВСЕХ активных пользователей...., а то проблем может быть гораздо больше... Что значит "проводить на сервере"? Залезть на сервер по удаленке? И чем это лучше? Может, у ТС что-то типа админской софтины. А она должна уметь манипулировать метаданными без всяких костылей типа хранимок и прочего. |
Сообщ.
#6
,
|
|
|
Тогда софтину нвдо переписать на .NET языке. SqlConnection также использует NativeSql
|
Сообщ.
#7
,
|
|
|
Цитата Fr0sT @ Что значит "проводить на сервере"? Залезть на сервер по удаленке? И чем это лучше? Вообще-то при любых манипуляциях по изменению структуры данных реально работающей БД необходимо отключить всех её юзеров. А то можно и до дедлайна доиграцца. Цитата Fr0sT @ Ага, голимый код на клиентах, а на сервере - ни строчки бизнес-правил и админ парится из...как он там на MS SQL... Даррагая редакция...етс...Может, у ТС что-то типа админской софтины. А она должна уметь манипулировать метаданными без всяких костылей типа хранимок и прочего. Цитата MIF @ Радиус кривизны рук надо постараться к бесконечности приблизить, а не с бубном скакать. Независимо от языка и способа коннекта к БД. Тогда софтину нвдо переписать на .NET языке |
Сообщ.
#8
,
|
|
|
C бубном можно долго скакать...
Думаю что проблема не в "бубне" а в структуре таблиц. |
Сообщ.
#9
,
|
|
|
Цитата LMM @ Вообще-то при любых манипуляциях по изменению структуры данных реально работающей БД необходимо отключить всех её юзеров. "Отключить юзеров" и "проводить на сервере" это таки две большие разницы |
Сообщ.
#10
,
|
|
|
Цитата Fr0sT @ "Отключить юзеров" и "проводить на сервере" это таки две большие разницы С точки зрения телодвижений админа БД - ДА! Я и не спорю. |
Сообщ.
#11
,
|
|
|
Цитата Fr0sT @ "Отключить юзеров" и "проводить на сервере" это таки две большие разницы Таки Да. Ex. Два(3,4,5...) пользователя пытаются проделать Цитата Voice @ SQL.Add('add Field123 varchar(255) NULL'); ExecSQL; Что будет в результате? DDL будет в шоке если совсем не упадет в "спячку" пытаясь разобраться с юзьверями которые пытались завершить транзакции в старую структуру и с теми которые хотят новую структуру таблицы.. DDL операции надобно проводить без активных пользователей. |
Сообщ.
#12
,
|
|
|
А что - кто-то на самом деле реально разрешает юзерам менять структуру базы?
|
Сообщ.
#13
,
|
|
|
Цитата LMM @ А что - кто-то на самом деле реально разрешает юзерам менять структуру базы? На темплате таблицах можно, но используется ОЧЕНЬ даже очень РЕДКО , почти НИКОГДА. Это - чесать правой рукой левое ухо. Добавлено Хотя... это возможно но надо соблюдать определенные правила. |
Сообщ.
#14
,
|
|
|
Цитата Bas @ Это очень мягко сказано! Это - чесать правой рукой левое ухо Цитата LMM @ Не-а, я на такое не пойду никогда. Потом гемору не оберёшься. Хотя... это возможно но надо соблюдать определенные правила |
Сообщ.
#15
,
|
|
|
Цитата LMM @ Цитата LMM @ Сегодня, 21:20 Хотя... это возможно но надо соблюдать определенные правила Не-а, я на такое не пойду никогда. Потом гемору не оберёшься. Тоже этого не понимаю. Но это можно, можно даже создать БД через Цитата Voice @ . Зачем? Это другой вопрос. ExecSQL |