ksena
Дата: 10.10.2003 12:12:07
Программа под MSSQL на Делфи.
Стоит зада. При загрузке нужно подключать базу, которая находится на переносном диске. Т. е. делать attach
Для запуска процедуры подсоединения использую ADOCommand, подключаемый через ConnectionString к базе master на (local).
В программе пишу:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOCommand1.CommandText:='EXEC sp_attach_db @dbname = ''veks'','+
'@filename1 = ''d:\Dat_veks\veks_data.mdf'','+
'@filename2 = ''d:\Dat_veks\veks_log.ldf''';
ADOCommand1.Execute;
end;
Для непосредственного соединения с приаттаченой базой использую затем ADOConnection.
Все нормально работает, база лепицца красиво.
При выходе мне нужно ее отсоединить.
Пытаюсь сделать так:
procedure TForm1.ADOConnection1AfterDisconnect(Sender: TObject);
begin
ADOCommand1.CommandText:='EXEC sp_detach_db ''veks'', ''true''' ;
ADOCommand1.Execute;
end;
Результат - либо просто ноль реакции, а база на месте,не удаляется. Либо выдается какая-то дикая ошибка по файлу проекта.
Что я делаю не так? Помогите пожалуйста, работа срочная....
buser
Дата: 10.10.2003 12:15:17
А детатчить Вы её пытаетесь в томже коннекшене....?
Berg
Дата: 10.10.2003 12:16:50
А почему ADOConnection1AfterDisconnect?
Может быть ADOConnection1BEFOREDisconnect?
buser
Дата: 10.10.2003 12:17:15
закройте все подкл-я к этой базе....
Berg
Дата: 10.10.2003 12:23:27
Извиняюсь, этого
> Для непосредственного соединения с приаттаченой базой использую затем
> ADOConnection.
Не прочел...
Может тут чего:
Remarks
sp_attach_db should only be executed on databases that were previously detached from the database server using an explicit sp_detach_db operation. If more than 16 files must be specified, use CREATE DATABASE with the FOR ATTACH clause.
If you attach a database to a server other than the server from which the database was detached, and the detached database was enabled for replication, you should run sp_removedbreplication to remove replication from the database.
Permissions
Only members of the sysadmin and dbcreator fixed server roles can execute this procedure.
ksena
Дата: 10.10.2003 12:30:58
Уважаемый Berg!
Это безусловно слишком нагло с моей стороны, но не затруднит ли Вас пояснить мне все вышенаписаное на русском языке?
Английские фразы в мне понятны кусочно, а переводчик только все испаганит.
Зараннее спасибо.
да
Adoconnection1.connected:=false я писала
чет не помогает
buser
Дата: 10.10.2003 12:39:42
забудьте. это не Ваш случай. код ошибки либо что пишет по аглицки...
ksena
Дата: 10.10.2003 12:53:46
Exception EAccessViolation in Module main_pr.exe at 000F1F4F
Access Violation at address 004F1F4F in Module main_pr.exe. Read of address
009B4B68
Это вот такая ошибка после выполнения
procedure TForm1.ADOConnection1AfterDisconnect(Sender: TObject);
begin
ADOCommand1.CommandText:='EXEC sp_detach_db ''veks'', ''true''' ;
ADOCommand1.Execute;
end;
pkarklin
Дата: 10.10.2003 12:55:54
ksena
Дата: 10.10.2003 13:45:51
:)\r
/topic/53069