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

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

mssqlserver & sql-запросы [D7, WinXP]


Страницы:   1 2

tv ©   (2006-01-09 18:18:00) 

как проверить, что таблица существует на сервере?
т.е мне нужно создать таблицу, только если она не существует.


Ega23   (2006-01-16 11:43:00) [1]


> не надо "тянуть" свои представления на всех. так как у меня
> работает всех наших клиентов устраивает. если у тебя по
> другому, и твоих устраивает... то и флаг тебе в руки. ;)


Вот это правильно.


Fay   (2006-01-16 11:36:00) [2]

2 Johnmen ©   (10.01.06 15:53) [13]
Проверкой возможности создать таблицу с таким именем.


sniknik   (2006-01-10 18:13:00) [3]

> isql - он вместе с ClientConnectivity ставится?
вряд ли. не в курсе. на "чистой" машине (с только поставленной виндой) точно нет. а программа(моя) из которой может потребоваться чтонибудь создать уже может стоять.

> Это надо полные права на базу иметь. У клиента - далеко не всегда.  :о)
у меня практически всегда в программах минимум 2 режима - юзер, админ. и неважно где она физически расположена. у админа должны быть права на базу. (и ему, если что, не приходится нестись на сервер и т.д., вообще напрягаться, даже из программы не нужно выходить)

p.s. не надо "тянуть" свои представления на всех. так как у меня работает всех наших клиентов устраивает. если у тебя по другому, и твоих устраивает... то и флаг тебе в руки. ;)


Ega23   (2006-01-10 17:54:00) [4]


> удобно, при частом выполнении скриптов (которые обычно генерятся
> в QA) из своей программы. причем довольно часто с клиента.
>  (у тебя часто на клиенте isql лежит?)


isql - он вместе с ClientConnectivity ставится?


> Да я не про [1] говорю, а в принципе про CREATE TABLE запущенный
> с клиента. GO естественно туда не надо :-)


Это надо полные права на базу иметь. У клиента - далеко не всегда.  :о)


Vlad   (2006-01-10 17:49:00) [5]


> Ega23 ©   (10.01.06 17:13) [18]


> А из-за GO и не пойдёт. Это же, по сути, Commit.

Да я не про [1] говорю, а в принципе про CREATE TABLE запущенный с клиента. GO естественно туда не надо :-)


sniknik   (2006-01-10 17:45:00) [6]

> А нафига велосипед изобретать? Есть же isql ?
удобно, при частом выполнении скриптов (которые обычно генерятся в QA) из своей программы. причем довольно часто с клиента. (у тебя часто на клиенте isql лежит?)

да и изобретать то там особо нечего, 20-30 строк кода.


Ega23   (2006-01-10 17:14:00) [7]


> лучше написать свой простой выполнитель скриптов где делить
> по тому же GO скрипт на команды и выполнять их последовательно.
>
>


А нафига велосипед изобретать? Есть же isql ?


Ega23   (2006-01-10 17:13:00) [8]


> Vlad ©   (10.01.06 15:45) [10]
>
> А вот почему скрипт не пойдет с клиента, я что-то тоже не
> понял...


А из-за GO и не пойдёт. Это же, по сути, Commit.


Vlad   (2006-01-10 16:34:00) [9]


> sniknik ©   (10.01.06 16:07) [16]

Ну да, проверять не буду, охотно верю :-)
Но ситуация реально была, когда один и тот же скрипт через ADOQuery давал эксепшн, а через ADOCommand благополучно выполнялся (на самом деле профайлер показывал ошибку). Хотел тогда еще сюда вылезти с вопросом, да что-то забил на это дело...


sniknik   (2006-01-10 16:07:00) [10]

Vlad ©   (10.01.06 15:58) [14]
ADOQuery по ExecSQL выполняет запрос во "встроенной" в него компоненте ADOCommand...
посмотри исходники ADODB.

а GO просто так/бездумно лучше не убирать, возможны ситуации когда следующая команда зависит от завершения предыдущих. лучше написать свой простой выполнитель скриптов где делить по тому же GO скрипт на команды и выполнять их последовательно.


Johnmen   (2006-01-10 16:03:00) [11]

>Vlad ©   (10.01.06 15:58) [14]
>Ты про ADOCommand?

Ну да.
Всё нормально. Ошибки и синтаксиса и выполнения ловились try'ем.


Vlad   (2006-01-10 15:58:00) [12]


> Johnmen ©   (10.01.06 15:53) [12]


> Снимаем скрипт создания с существующей БД, убираем GO, прописываем
> в CommandText и т.д.

Ты про ADOCommand?
Я тут через него недавно пробовал скрипт запускать(MSSQL), мне показалось что он глушит эксепшны. Во всяком случае скрипт с ошибкой спокойно проходил через try..except. Особо не разбираясь, переделал на ADOQuery, стало все в порядке..


Johnmen   (2006-01-10 15:53:00) [13]

>Fay ©   (10.01.06 15:50) [11]
>Это не будет проверкой существования таблицы.

А что же это будет?


Johnmen   (2006-01-10 15:53:00) [14]

>Ega23 ©   (10.01.06 15:41) [9]

Сколько делал, никаких сложностей.
Снимаем скрипт создания с существующей БД, убираем GO, прописываем в CommandText и т.д.
(ес-но АДО)


Fay   (2006-01-10 15:50:00) [15]

2 Ega23 ©   (10.01.06 15:36) [7]
Предпллагается, что у автора хватит ума оставить только select...

2 Johnmen ©   (10.01.06 15:38) [8]
> Совсем? Почему?
Это не будет проверкой существования таблицы.


Vlad   (2006-01-10 15:45:00) [16]


> Ega23 ©   (10.01.06 15:41) [9]

а GO это вобще левый оператор, никоем образом не относящийся к Transact SQL.
А вот почему скрипт не пойдет с клиента, я что-то тоже не понял...
Хотя, не проверял.


Ega23   (2006-01-10 15:41:00) [17]


> Вобщем, не совсем уловил, что ты имел в виду...
>


Я имел ввиду развёртывание БД. Теоретически, "загонялку" можно и с клиента делать, но, как правило, скрипты на создание БД больно сложные, а при выполнении их с клиента стандартными средствами существует много ограничений, например на GO.


Johnmen   (2006-01-10 15:38:00) [18]

>Ega23 ©   (10.01.06 15:33) [5]

Нет, я ничего не создаю...
Мне казалось, что мы в контексте программирования на Delphi обсуждаем.
Вобщем, не совсем уловил, что ты имел в виду...

>Fay ©   (10.01.06 15:33) [6]
>Это ничего не даст.

Совсем? Почему?


Ega23   (2006-01-10 15:36:00) [19]


> Правильный ответ в [1].


С клиента такой запрос не пройдёт.


Fay   (2006-01-10 15:33:00) [20]

2 Johnmen ©   (10.01.06 14:31) [4]
> Просто выполнить запрос создания таблицы.
Это ничего не даст.

З.Ы.
Правильный ответ в [1].


Страницы:   1 2

Наверх

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