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

Откуда:
Сообщений: 545
Есть 12 баз, каждой базе соответствует месяц. Есть джёб который каждую ночь при переходе месяца нужно править, менять цифру месяца.
db01
db02
.
.
.
db12

Как автоматизировать этот процесс?
4 окт 11, 22:00    [11384933]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Для этого придумали секционирование.
4 окт 11, 22:02    [11384938]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
Гавриленко Сергей Алексеевич
Для этого придумали секционирование.


т.е.?

Структуру базы я править не могу, мне оказали с формулировкой "Так исторически сложилось"
4 окт 11, 22:05    [11384946]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Есть джёб который каждую ночь при переходе месяца нужно править, менять цифру месяца.


Стесняюсь спросить, а вычислить эту "цифру месяца" в самом шаге джоба?
4 окт 11, 22:12    [11384960]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
pkarklin
автор
Есть джёб который каждую ночь при переходе месяца нужно править, менять цифру месяца.


Стесняюсь спросить, а вычислить эту "цифру месяца" в самом шаге джоба?


Да но как? Да еще и пристегнуть цифру к имени базы. Это был бы оптимальный вариант.
4 окт 11, 22:15    [11384969]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
2king2
pkarklin
пропущено...


Стесняюсь спросить, а вычислить эту "цифру месяца" в самом шаге джоба?


Да но как? Да еще и пристегнуть цифру к имени базы. Это был бы оптимальный вариант.

select datepart(mm,getdate())
4 окт 11, 22:18    [11384978]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
2king2,

Раз Вы знаете, как эту цифру поправить руками, значит это можно организовать в виде выражения...

DECLARE
  @ProcName sysname,
  @SQL nvarchar(1000)

SET @ProcName = 'db' + RIGHT('00' + CAST(DATEPART(mm, GETDATE()) AS varchar(2)), 2) + '.dbo.sp_executesql'
SET @SQL = 'SELECT DB_NAME()'

EXEC @ProcName @SQL
4 окт 11, 22:24    [11384994]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
pkarklin,

Спасибо.
5 окт 11, 10:51    [11386270]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
pkarklin,

Делаю так выдает ошибку:
+ Код

DECLARE
  @ProcName sysname,
  @SQL nvarchar(1000)

SET @ProcName = 'FleetLog' + RIGHT('00' + CAST(DATEPART(mm, GETDATE()) AS varchar(2)), 2) + '.[dbo].[UplinkMsgLog]'

SELECT 	Fleet_id.[ItemId]	
		,'222'
		,Billing_K2_ids.[id] --id_k2
		,dateadd(hh,-4,Fleet_id.[CellDateTime])
		,Fleet_id.[GPSDateTime]
		,Fleet_id.[GPSY] / -100000.0
		,Fleet_id.[GPSX] / 100000.0
		,Fleet_id.[Speed]
		,Fleet_id.[Direction]		
		,Fleet_id.[EngineOn]  
		,Fleet_id.[MileCounter]      
FROM 	@ProcName as Fleet_id, 
		[NexNet].[dbo].[CMUs] as Fleet_Billing_ids 
		[SQL01].[Navi].[dbo].[Unit] as Billing_K2_ids

Сообщение 137, уровень 15, состояние 2, строка 22
Must declare the variable '@ProcName'.


Что я делаю не так?
31 окт 11, 15:57    [11527584]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Glory
Member

Откуда:
Сообщений: 104751
2king2
Что я делаю не так?

Не читаете хелп про FROM
31 окт 11, 15:59    [11527606]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
Glory
Не читаете хелп про FROM


Не читал, все равно не понятно :(
31 окт 11, 16:21    [11527807]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Glory
Member

Откуда:
Сообщений: 104751
2king2
Не читал, все равно не понятно

Ну так может почитать ?
31 окт 11, 16:24    [11527826]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
2king2
Как автоматизировать этот процесс?
Очевидно, нужно поправить код, который в джобе.

Как поправить - вам никто не скажет, мы же код не видим.

Может, у вас там удалённо макрос awk на линуксе вызывается.
31 окт 11, 16:31    [11527899]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
2king2
Делаю так выдает ошибку:
А это у вас без процедуры, прямо вызывается из шага задания?
31 окт 11, 16:33    [11527915]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
alexeyvg
2king2
Как автоматизировать этот процесс?
Очевидно, нужно поправить код, который в джобе.

Как поправить - вам никто не скажет, мы же код не видим.

Может, у вас там удалённо макрос awk на линуксе вызывается.


Не не, обычная винда. Ни каких наворотов. Весь код джоба я указал выше под сполером "Код"
31 окт 11, 16:34    [11527925]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
2king2
Не не, обычная винда. Ни каких наворотов. Весь код джоба я указал выше под сполером "Код"
2 варианта - лабо формировать в джобе строку запроса и выполнять с помощью EXEC (динамический SQL), либо изменять джоб раз в месяц другим джобом, процедурой sp_update_jobstep
31 окт 11, 16:46    [11528004]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
alexeyvg,

Ок, появился новый косяк. Ругается в 'Billing_K2_ids.type not like ' + 'Satellit%' на Incorrect syntax near '%
31 окт 11, 17:34    [11528437]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Glory
Member

Откуда:
Сообщений: 104751
2king2
Весь код джоба я указал выше под сполером "Код"

вы вот эту часть - FROM @ProcName as Fleet_id - сами придумали или кто подсказал ?
31 окт 11, 17:34    [11528440]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
2king2
Member

Откуда:
Сообщений: 545
Glory
2king2
Весь код джоба я указал выше под сполером "Код"

вы вот эту часть - FROM @ProcName as Fleet_id - сами придумали или кто подсказал ?


Сам. Если подсказали то я бы не тупил бы тута
31 окт 11, 17:37    [11528471]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Честно говоря, от скрипта Pkarklinа там ничего не осталось!
Умеет же народ копипастить!
31 окт 11, 17:39    [11528489]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
2king2
alexeyvg,

Ок, появился новый косяк. Ругается в 'Billing_K2_ids.type not like ' + 'Satellit%' на Incorrect syntax near '%
Ну так распечатайте получившуюся строку и увидите ошибку.

Скорее всего, не будет апострофа для строковой константы.
31 окт 11, 17:41    [11528501]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Glory
Member

Откуда:
Сообщений: 104751
2king2
Сам. Если подсказали то я бы не тупил бы тута

Круто. Вам вообще про каждую часть запроса нужно рассказывать ?
Сами вы не можете прочитать, что может следовать после FROM ?
31 окт 11, 17:41    [11528502]     Ответить | Цитировать Сообщить модератору
 Re: Подкиньте идею как переходить между базами разделенные по месяцам.  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
Начиная с MS SQL 2005 можно следующее.
Создаете job, который каждый день в 00:00:00 выполняете следующий скрипт:
declare @table sysname
if day(getdate()) = 1
   begin
   set @table = '[FleetLog' + replace(str(month(getdate()),2),' ','0' )+'].[dbo].[UplinkMsgLog]'
   if exists(select 1 from sys.synonyms where name = 'UplinkMsgLog' and schema_id = 1) drop synonym dbo.UplinkMsgLog
   execute('create synonym dbo.UplinkMsgLog for ' + @table)
   end
У себя после этого можно использовать запрос:
select
   ...
FROM 	dbo.UplinkMsgLog as Fleet_id
31 окт 11, 18:22    [11528775]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить