Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
ВнизВыполнение скриптов в MSSQL Найти похожие ветки
← →
Maverick © (2005-10-06 12:33) [0]Добрый день, мастера!
Встала такая задачка - подсоединиться к базе, запустить на выполнение скрипт, отсоединиться от базы.
предполагается что скрипт храниться на сервере.
Как это можно сделать?
и где лучше хранить скрипты - имеет ли смысл скрипты запихать в blob поля какой-нить таблицы?
← →
stone © (2005-10-06 12:52) [1]
> Встала такая задачка - подсоединиться к базе, запустить
> на выполнение скрипт, отсоединиться от базы.
> предполагается что скрипт храниться на сервере.
> Как это можно сделать?
ADOConnection + ADOCommand (или ADODataset по необходимости)
> и где лучше хранить скрипты - имеет ли смысл скрипты запихать
> в blob поля какой-нить таблицы?
Можно и так. Смотри READTEXT в BOL
← →
Seg (2005-10-06 12:57) [2]имеет ли смысл скрипты запихать в blob поля какой-нить таблицы?
Имеет смысл хранить шаблоны скриптов и параметры для создания динамических запросов.
← →
Maverick © (2005-10-06 12:58) [3]stone © (06.10.05 12:52) [1]
смысл в том, что бы отсоединиться от базы в момент выполнения скрипта..
такое вообще возможно?
можно конечно вызывать isql.exe на сервере с указанием скрипта..но это как то некрасиво да и доступ нужен для этого
← →
Seg (2005-10-06 13:09) [4]смысл в том, что бы отсоединиться от базы в момент выполнения скрипта..
такое вообще возможно?
А как ты собираешься получать результат запроса?
← →
stone © (2005-10-06 13:10) [5]
> Maverick © (06.10.05 12:58) [3]
> stone © (06.10.05 12:52) [1]
>
> смысл в том, что бы отсоединиться от базы в момент выполнения
> скрипта..
> такое вообще возможно?
а смысл?
вообще возможно:
создай Job c одним степом
подключайся к базе, получай текст скрипта и помещай его в степ этого joba
запускай job на выполнение и спокойно отключайся
← →
Maverick © (2005-10-06 13:24) [6]Seg (06.10.05 13:09) [4]
результат можно получить посмотрев установленный статус в какой-нить таблице, который выставляется при успешном выполнеии скрипта
stone © (06.10.05 13:10) [5]
а как запустить job ?
← →
stone © (2005-10-06 13:26) [7]см. sp_start_job в BOL
← →
Seg (2005-10-06 13:26) [8]Положи запрос в процедуру, запусти ее и отключайся.
← →
Maverick © (2005-10-06 13:30) [9]Seg (06.10.05 13:26) [8]
а так не получиться любые же компоненты доступа к базам (я использую ADO) при запуске процедуры создают неявные (если самому не указывать) транзакции и они оборвуться если отконнектиться. хотя может я чего то не понимаю
← →
Maverick © (2005-10-06 13:32) [10]> stone ©
Спасибо :)
← →
Seg (2005-10-06 13:35) [11]Не знаю, как работают транзакции в SQL сервере, а в Оракле я бы в процедуре, после запроса, поставил бы commit и эта команда завершит транзакцию.
← →
dreamse (2005-10-07 09:37) [12]
var
cmd: _Command;
Conn: _Connection;
Pars: Parameters;
RA: OleVariant;
rs: _Recordset;
n: Integer;
begin
Conn:= CreateComObject(CLASS_Connection) as _Connection;
Conn.ConnectionString:= main.ADOConnection1.ConnectionString;
Conn.Open(Conn.ConnectionString, "", "", Integer(adConnectUnspecified));
cmd:= CreateComObject(CLASS_Command) as _Command;
cmd.CommandType:= adCmdText;
cmd.Set_ActiveConnection(Conn);
cmd.CommandText:= SQL.Lines.Text; // Код SQL
memo1.Clear;
// ------------------------------------------------------------------------
try
screen.Cursor:=crSQLWait;
rs:= cmd.Execute(RA, 0, Integer(adCmdText));
except
on e:exception do
listerrors(e);
end;
screen.Cursor:=crDefault;
while rs <> nil do begin
for n:= 0 to (Conn.Errors.Count-1) do
Memo1.Lines.Add(Conn.Errors.Item[n].Description);
rs:= rs.NextRecordset(RA);
end;
if memo1.Lines.Text <> "" then
begin
bsSkinPanel5.Height:=71;
bsSkinSplitter1.Visible:=true;
end else
begin
bsSkinPanel5.Height:=1;
bsSkinSplitter1.Visible:=false;
bsSkinMessage1.MessageDlg("Запрос обработан , результат не был возвращён" + #13#10 +
"Для возвращения результата используйте модуль работы с отчётами", mtInformation, [mbOk], 0);
end;
cmd.Set_ActiveConnection(nil);
Conn.Close;
Pars:= nil;
cmd:= nil;
Conn:= nil;
end;
Удачи
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.105 c