Главная страница
    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.051 c
8-1120155066
ronyn
2005-06-30 22:11
2005.11.20
Минимизация названия медиа файла в ListBox


14-1130473666
PZ
2005-10-28 08:27
2005.11.20
Билл Гейтс - с днем рождения


6-1122911784
Set33
2005-08-01 19:56
2005.11.20
Работа с прокси


8-1120036039
Ш-К
2005-06-29 13:07
2005.11.20
О свойстве ScanLine


2-1130837000
Dush
2005-11-01 12:23
2005.11.20
рисование на StringGrid





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