Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2014.04.13;
Скачать: [xml.tar.bz2];

Вниз

Закрытие подключения через ADO   Найти похожие ветки 

 
DmitriyG. ©   (2011-02-08 22:59) [0]

Создаю временую БД на MSSQL сервере, затем с помощью TADOQuery (ADOQuery2) создаю в базе новую схему. После чего пытаюсь удалить БД - но ничего не получается - говорит используется БД... Я уже и Free и Close делал и через ADOConnection пробовал - все равно соединение висит. Если же создание схемы реализовать через TQuery и вызвать DataBase.Connected := False, то все нормально.... Как победить проблему с ADO?

//удаляем временную БД
Request3 := "IF DB_ID (N""ArcTempDB"") IS NOT NULL DROP DATABASE SomeDB";
Query1.SQL.Text := Request3;
Query1.ExecSQL;

//создаем временную БД
Request1 := "CREATE DATABASE ArcTempDB COLLATE SQL_Latin1_General_CP1251_CI_AS";
Query1.SQL.Text := Request1;
Query1.ExecSQL;

//создаем объект (с использованием ADO)
Request2 := " CREATE SCHEMA Common";
ADOQuery2.SQL.Text := Request2;
ADOQuery2.ExecSQL;
ADOQuery2.Close;

Database2.Connected := False;

//пытаемся удалить БД (в случае использования ADO - вылетает
Request3 := "IF DB_ID (N""ArcTempDB"") IS NOT NULL DROP DATABASE ArcTempDB";
Query1.SQL.Text := Request3;
Query1.ExecSQL;



 
DmitriyG. ©   (2011-02-08 23:01) [1]

В примере в одном месте необходимо SomeDB заменить на ArcTempDB :-)


 
Плохиш ©   (2011-02-08 23:48) [2]

Перед удалением надо подсоединить используемый ADOConnection к другой, отличной от удаляемой, базе.


 
sniknik ©   (2011-02-09 09:34) [3]

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

т.е. как обычно показанные куски кода не имеют никакого отношения к реальной проблеме.


 
DmitriyG. ©   (2011-02-09 12:58) [4]

ADOConnection переключал на другую базу - не помогает...
Создание базы естественно делается через подключение к другой базе... А создание схемы как раз и захватывает новую созданную базу...


 
sniknik ©   (2011-02-09 13:10) [5]

> А создание схемы как раз и захватывает новую созданную базу...
каким образом?

CREATE SCHEMA (Transact-SQL)
SQL Server 2008 R2
Другие версии

   * SQL Server 2008
   * SQL Server 2005

Создает схему в текущей базе данных. При помощи транзакции CREATE SCHEMA также можно создавать таблицы и представления в новой схеме и предоставлять разрешения GRANT, DENY или REVOKE на такие объекты.

а переключений/пере подключений нет (не показано = нет)

проверочное -
DROP SCHEMA
перед попыткой удалить "захваченную" базу


 
sniknik ©   (2011-02-09 13:15) [6]

вообще описаниями и доказательствами, типа "у меня  все правильно, но почему то не работает" ничего не добьешься.  ну разве что советов типа "попробуй при другой фазе луны".

КОД !!! который можно проверить/повторить "глюк". вот что реально помогает.


 
KSergey ©   (2011-02-15 16:20) [7]

На сколько я помню, ADO удерживает соединение какое-то время на случай, если снова подконнектиться надумаешь.
Рулится или нет таймаут - не помню.


 
DmitriyG. ©   (2011-02-15 22:14) [8]

Ну вобщем решил переводом базы перед удалением в режим SINGLE USER
А по поводу схемы она создается в новой БД.... Просто ADOQuery2 настроен на подключение к новой (создаваемой БД).... А само создание базы данных и удаление производится через другое соединение



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2014.04.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.002 c
15-1382698422
ProgRAMmer Dimonych
2013-10-25 14:53
2014.04.13
Победить DNS провайдера (вопрос чайника)


3-1297195164
DmitriyG.
2011-02-08 22:59
2014.04.13
Закрытие подключения через ADO


15-1381896201
KilkennyCat
2013-10-16 08:03
2014.04.13
в Си функция объявлена как static


2-1372751242
10JQKA
2013-07-02 11:47
2014.04.13
возврат строки как olevariant в ком-сервере


15-1382357410
Дмитрий СС
2013-10-21 16:10
2014.04.13
Событие для всех потоков.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский