Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.072 c
14-1130411016
TButton
2005-10-27 15:03
2005.11.20
влияет ли визуальный стиль вндовс ХР на загрузку процессора


1-1130314479
gVisio
2005-10-26 12:14
2005.11.20
TFrame в Dll


14-1130348890
Knight
2005-10-26 21:48
2005.11.20
Если кто-то будет в IRC-е... забегайте


14-1130334857
Lexer
2005-10-26 17:54
2005.11.20
Нужна цифровая подпись для подписывания кода


14-1130308675
Игорь Шевченко
2005-10-26 10:37
2005.11.20
Кто-нибудь из москвичей идет на SEC(R) ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский