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

Откуда:
Сообщений: 607
Вот задался такой целью расширить скрипт отчета о размерах баз. Хочу добавить возможность ведения истории размера для каждой базы. Хоче посоветоваться, как лучше это организовать.

Ясно, что необходимо создать таблицу, где будеи хранить:

|дату|имя базы|резмер базы|???изменение???|

соответственно ???изменение??? должно содержать в себе разницу между нынешней записью и предыдущей. Вот мне интересно, каким способом удобней сделать сравнение?
22 сен 09, 14:09    [7692519]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
teCa
Вот мне интересно, каким способом удобней сделать сравнение?
Вычитанием.
22 сен 09, 14:13    [7692562]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
для "имя базы" взять "резмер базы" с максимальным "дату" и вычесть из свежего

--------------------------------------------------------------
Дьявол кроется в деталях.
22 сен 09, 14:15    [7692571]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
Дедушка
для "имя базы" взять "резмер базы" с максимальным "дату" и вычесть из свежего

--------------------------------------------------------------
Дьявол кроется в деталях.


Решил поступить подобным способом, только использовать ид записи.

select * from dbsize 
ORDER BY dbname

получаем табличку следующего вида:

DB_id Date Name Size Path Change
1 2009-09-22 14:15:49.710 1 1 1 NULL
2 2009-09-22 14:16:02.083 1 1 1 NULL
3 2009-09-22 14:16:02.990 1 1 1 NULL
4 2009-09-22 14:16:04.020 1 1 1 NULL

Посути, чтобы получить изменение в размере мне нужно из этой таблици значение поля Size строки с максимальным DB_id вычесть значения поля Size строки с DB_id - 1. Из этого возникает вопрос, как определить максимальный DB_id таблички?
22 сен 09, 14:24    [7692651]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Glory
Member

Откуда:
Сообщений: 104760
teCa

Посути, чтобы получить изменение в размере мне нужно из этой таблици значение поля Size строки с максимальным DB_id вычесть значения поля Size строки с DB_id - 1. Из этого возникает вопрос, как определить максимальный DB_id таблички?

Вы совсем не знакомы SQL ?
SELECT TOP 1 ... ORDER BY, SELECT MAX() вам говорит о чем то ?
22 сен 09, 14:27    [7692667]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
в принципе

select count(*) from dbsize
- получим номер последней записи.
22 сен 09, 14:29    [7692681]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
update
   t
set
   Change = t.Size - isnull((select top 1 Size from dbsize where Date < t.Date order by Date desc), 0)
from dbsize t
22 сен 09, 14:30    [7692688]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
tpg
update
   t
set
   Change = t.Size - isnull((select top 1 Size from dbsize where Date < t.Date order by Date desc), 0)
from dbsize t

сильно подозреваю, что поле dbname говорит о наличии в таблице dbsize данных по нескольким базам
22 сен 09, 14:33    [7692710]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Дедушка
сильно подозреваю, что поле dbname говорит о наличии в таблице dbsize данных по нескольким базам
Что мешает в коррелированный запрос добавить условие на имя базы?
22 сен 09, 14:36    [7692735]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
tpg
Дедушка
сильно подозреваю, что поле dbname говорит о наличии в таблице dbsize данных по нескольким базам
Что мешает в коррелированный запрос добавить условие на имя базы?

мне ни чего :)
почему то возникло стойкое чувство, что следующий вопрос автора будет аля: "а как быть если в таблице несколько баз..."
22 сен 09, 14:39    [7692764]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
Я не понимаю:

1. Что в себя берет это - t.dbsize?
2. Что это за условие - (Date < t.Date)?
22 сен 09, 15:36    [7693305]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
Как в результат выборки получить строку с нужным порядковым id?
22 сен 09, 16:05    [7693575]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Glory
Member

Откуда:
Сообщений: 104760
teCa
Как в результат выборки получить строку с нужным порядковым id?

А какой порядковый id для вас является нужным то ?
22 сен 09, 16:12    [7693637]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
В результате я получаю 2 строки, из поля строки с порядковым id = 2 я вычту поле с порядковым id = 1 и получу интересующую меня разницу.
22 сен 09, 16:18    [7693699]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Glory
Member

Откуда:
Сообщений: 104760
teCa
В результате я получаю 2 строки, из поля строки с порядковым id = 2 я вычту поле с порядковым id = 1 и получу интересующую меня разницу.

Ну вам же показали, как для каждой строки выполнить коррелированный запрос, для поиска "предыдущей" записи

Может не стоит без знания основ SQL создавать свое средство мониторинга ?
Есть достаточно уже готовых продуктов
22 сен 09, 16:24    [7693761]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
Так, а чем мой вариант хуже? ИМХО он сильно проще для понимания?
22 сен 09, 16:26    [7693787]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Glory
Member

Откуда:
Сообщений: 104760
teCa
Так, а чем мой вариант хуже? ИМХО он сильно проще для понимания?

Какой ваш вариант, если вы не можете написать простой запрос на одной таблице из трех полей ?
Даже по приведенному примеру
22 сен 09, 16:30    [7693825]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
teCa
Как в результат выборки получить строку с нужным порядковым id?


Просто подскажите как нужно составить запрос, чтобы получить нужное поля нужной строки.

Допустим поле size таблицы dbsize строки с id = 2
22 сен 09, 16:35    [7693866]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
teCa
teCa
Как в результат выборки получить строку с нужным порядковым id?


Просто подскажите как нужно составить запрос, чтобы получить нужное поля нужной строки.

Допустим поле size таблицы dbsize строки с id = 2

select t.size from dbsize t where t.id=2 
22 сен 09, 16:37    [7693886]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
teCa
Member

Откуда:
Сообщений: 607
Дедушка
select t.size from dbsize t where t.id=2 


Пробовал

автор
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'id'.
22 сен 09, 16:41    [7693933]     Ответить | Цитировать Сообщить модератору
 Re: Контроль изменения размера базы с сохранением истории?  [new]
Glory
Member

Откуда:
Сообщений: 104760
teCa
Дедушка
select t.size from dbsize t where t.id=2 


Пробовал

автор
Server: Msg 207, Level 16, State 3, Line 1
Invalid column name 'id'.

Если вы про то, если у сервера скрытое поле-идентификатор записи, но вынужден вас огорчить, что такового не имеется. И в запросе вам придется указывать только те поля, которые имеются в таблице
22 сен 09, 16:44    [7693958]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить