Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
SQL Server 2005

В базе имеется порядка 200 таблиц (каждый день на одну таблицу становиться БОЛЬШЕ) - Имя таблиц имеет формат "T_Table_2013_01_31_00_00_00" ... и так до "T_Table_2013_10_28_00_00_00"

И для каждой из этих таблиц я выполняю один и тот же запрос на выборку на УДАЛЕНИЕ

Declare @var1 varchar(100)
Declare @date_from datetime
Declare @date_to datetime

SET @date_from = CAST('2013-10-01' AS datetime)
SET @date_to = CAST('2013-10-30' AS datetime)
SET @var1='Иванов'
 
WHILE @date_from < @date_to
BEGIN
 	set @tmp1 = CONVERT(CHAR(10),@date_from,120)
	set @tmp2 = REPLACE(@tmp1, '-', '_')
	set @tmp3 = 'delete from  T_Table_' + @tmp2 + '_00_00_00 where Field_1=''' + @var1 + ''''
	set @date_from = DATEADD(day, 1, @date_from)
END


как можно данный код автоматизировать, поместив его в базе (или процедуру) и чтобы он САМ запускался на исполнение в конце КАЖДОГО дня. Чтобы @date_from было равно ПРЕДЫДУЩИЙ ДЕНЬ, @date_to НЫНЕШНИЙ ДЕНЬ
28 окт 13, 22:39    [15043458]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Job же.
28 окт 13, 22:42    [15043472]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
Гавриленко Сергей Алексеевич
Job же.

это через Агент SQL Server ?
28 окт 13, 22:51    [15043496]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31446
Ольга Семенова
Гавриленко Сергей Алексеевич
Job же.

это через Агент SQL Server ?
Ага

Можно и без процедуры, просто там любые запросы писать. Хотя я предпочитаю с процедурами.
29 окт 13, 00:54    [15043787]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
процедуры создались

у меня 2 процедуры. Их можно в один Job сделать? или нужно для каждой процедуры свой Job ?

Начала делать Job. Вписала имя для него. Подскажите пошагово что дальше? Из выпадающего списка категорий с вкладки General что выбирать? Как мне мои имеющиеся процедуры.
29 окт 13, 14:12    [15046544]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ольга Семенова
Подскажите пошагово что дальше?

Читать хелп - Implementing Jobs
29 окт 13, 14:16    [15046569]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
делаю New Job Step. Из списка типов выбирала все строчки - но не нашла где подгружается хранимая процедура. Везде только запросы и кнопка Опен для их загрузки

есть мануал на русском пошаговый?
29 окт 13, 14:50    [15046810]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ольга Семенова
но не нашла где подгружается хранимая процедура.

Ничего автоматически "подгружаться" не будет. Скрипт запуска процедуры придется таки писать руками
29 окт 13, 14:54    [15046836]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
в строке command пишется запуск хранимой процедуры? И могу ли я запускать ДВЕ процедуры?

тип из списка выбирать Operating system (CmdExec?)
29 окт 13, 15:00    [15046877]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ольга Семенова
в строке command пишется запуск хранимой процедуры? И могу ли я запускать ДВЕ процедуры?

Там пишется СКРИПТ
скрипт - это много команд. сколько вам нужно

Ольга Семенова
тип из списка выбирать Operating system (CmdExec?)

А подумать ?
29 окт 13, 15:01    [15046891]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
Glory
Ольга Семенова
в строке command пишется запуск хранимой процедуры? И могу ли я запускать ДВЕ процедуры?

Там пишется СКРИПТ
скрипт - это много команд. сколько вам нужно

Ольга Семенова
тип из списка выбирать Operating system (CmdExec?)

А подумать ?


-выбираю значит тип шага T-SQL
-в списке DataBase свою БД
-в поле command пишу запуск процедуры
exec MyProcedure1

и потом создаю новый след. Step - только в поле command запуск второй процедуры exec MyProcedure1

все верно?
29 окт 13, 15:10    [15046971]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
*второй процедуры exec MyProcedure2
29 окт 13, 15:14    [15047011]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Ольга Семенова
В базе имеется порядка 200 таблиц (каждый день на одну таблицу становиться БОЛЬШЕ) - Имя таблиц имеет формат "T_Table_2013_01_31_00_00_00" ... и так до "T_Table_2013_10_28_00_00_00"
Автора этой "идеи" надо срочно поставить к стенке.
29 окт 13, 15:55    [15047392]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
iap
Ольга Семенова
В базе имеется порядка 200 таблиц (каждый день на одну таблицу становиться БОЛЬШЕ) - Имя таблиц имеет формат "T_Table_2013_01_31_00_00_00" ... и так до "T_Table_2013_10_28_00_00_00"
Автора этой "идеи" надо срочно поставить к стенке.

и каждый день создается по таблице - в которой минимум по 300 000 записей
и это несмотря на то, что софт был куплен за несколько лямов
29 окт 13, 16:14    [15047559]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ольга Семенова
iap
пропущено...
Автора этой "идеи" надо срочно поставить к стенке.

и каждый день создается по таблице - в которой минимум по 300 000 записей
и это несмотря на то, что софт был куплен за несколько лямов

А вы уверены, что в этом софте нет того функционала, который вы сейчас пытаетесь создать ?
29 окт 13, 16:18    [15047586]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31446
Ольга Семенова
есть мануал на русском пошаговый?
Да, справка доступна на русском.
29 окт 13, 16:50    [15047858]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
Glory
Ольга Семенова
пропущено...

и каждый день создается по таблице - в которой минимум по 300 000 записей
и это несмотря на то, что софт был куплен за несколько лямов

А вы уверены, что в этом софте нет того функционала, который вы сейчас пытаетесь создать ?


нет - разработчики так сказали
29 окт 13, 17:33    [15048139]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
SanyL
Member

Откуда: Москва
Сообщений: 4540
Ольга Семенова
SQL Server 2005

В базе имеется порядка 200 таблиц (каждый день на одну таблицу становиться БОЛЬШЕ) - Имя таблиц имеет формат "T_Table_2013_01_31_00_00_00" ... и так до "T_Table_2013_10_28_00_00_00"

И для каждой из этих таблиц я выполняю один и тот же запрос на выборку на УДАЛЕНИЕ

Declare @var1 varchar(100)
Declare @date_from datetime
Declare @date_to datetime

SET @date_from = CAST('2013-10-01' AS datetime)
SET @date_to = CAST('2013-10-30' AS datetime)
SET @var1='Иванов'
 
WHILE @date_from < @date_to
BEGIN
 	set @tmp1 = CONVERT(CHAR(10),@date_from,120)
	set @tmp2 = REPLACE(@tmp1, '-', '_')
	set @tmp3 = 'delete from  T_Table_' + @tmp2 + '_00_00_00 where Field_1=''' + @var1 + ''''
	set @date_from = DATEADD(day, 1, @date_from)
END


как можно данный код автоматизировать, поместив его в базе (или процедуру) и чтобы он САМ запускался на исполнение в конце КАЖДОГО дня. Чтобы @date_from было равно ПРЕДЫДУЩИЙ ДЕНЬ, @date_to НЫНЕШНИЙ ДЕНЬ


кроме джоба еще советую, отсительно @date_from было равно ПРЕДЫДУЩИЙ ДЕНЬ, @date_to НЫНЕШНИЙ ДЕНЬ

set @date_from = getdate()-1
set @date_to = getdate()
29 окт 13, 17:39    [15048177]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
всем спасибо.
29 окт 13, 18:13    [15048337]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
а как посмотреть испторию запуска работы job'а . Вручную запускаю - все отрабатывает и удаляет. А сам джоб по расписанию не отрабатывает видимо
30 окт 13, 09:22    [15050426]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Ольга Семенова,

В дереве объектов SSMS находите джоб (SQL Server Agent -> Jobs), на нужном джобе — правая кнопка мыши, View History.
30 окт 13, 09:24    [15050436]     Ответить | Цитировать Сообщить модератору
 Re: Поместить код с запросом в процедуру и ее запуск в конце дня  [new]
Ольга Семенова
Member

Откуда:
Сообщений: 698
есть - спасибо. нашла в чем ошибка. запуск в 00:00:00 по расписанию входит в ошибку с запросом, т.к. там используется GetDate
30 окт 13, 09:43    [15050511]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить