Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка сложного отчета в файл, два курсора 
:(
    Опции темы
NoraS
Дата 19.1.2019, 05:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.9.2010

Репутация: нет
Всего: нет



Здравствуйте,

Задача получить от сервера 2014 версии список баз со следующими параметрами: общий объем базы, размер лога, размер data файла, размер последнего бэкапа, естественно, с датой временем. Все это хозяйство, необходимо выложит csv файлом в определенное место.
Что у меня получилось на данный момент:
Код

Declare @dbn VARCHAR(80)
-- результат первого курсора список имен баз
Declare @bsdate VARCHAR(80)
-- дата+ время старта 
Declare @dbsname VARCHAR(80)
--имя базы
Declare @bfdate VARCHAR(80)
-- дата + время финиша
Declare @dtotalsize VARCHAR(80)
-- суммарный объем файлов базы
Declare @ddatasize VARCHAR(80)
-- размер дата файла
Declare @dlogsize VARCHAR(80)
-- размер лога
Declare @bfullsize VARCHAR(80)
--размер бэкапа 

--курсор для выборки имен базы данных начало
Declare dbh_cursor CURSOR LOCAL FOR
 SELECT name FROM sys.databases WHERE state = 0 and database_id>4
  open dbh_cursor
  fetch next from dbh_cursor
  into @dbn
  --курсор для выборки имен базы данных конец
WHILE @@FETCH_STATUS = 0
 BEGIN
 print  @dbn
 fetch next from dbh_cursor
  into @dbn
  END
  
  -- работает список выдает

 Declare dbsize_cursor CURSOR SCROLL FOR
 SELECT 
        bs.backup_start_date as [backup_start_date], 
        bs.database_name,
        bs.backup_finish_date, 
        sum(bf.file_size/1024/1024) [DB Size Total (MB)],
        (SELECT sum(bf2.file_size) FROM msdb..backupfile bf2 WHERE bf2.backup_set_id=bs.backup_set_id AND bf2.file_type='D')/1024/1024 [Data File (MB)],
        (SELECT sum(bf2.file_size) FROM msdb..backupfile bf2 WHERE bf2.backup_set_id=bs.backup_set_id AND bf2.file_type='L')/1024/1024 [Log File (MB)],
        bs.backup_size/1024/1024 [Backup Size (MB)]
FROM  msdb..backupset bs
JOIN msdb..backupfile bf ON bs.backup_set_id=bf.backup_set_id
WHERE 
 bs.database_name = @dbn
 and bs.type='D'
GROUP BY 
    bs.backup_start_date, bs.backup_set_id, bs.server_name,
    bs.database_name, bs.recovery_model, bs.backup_size,
    bs.backup_finish_date, bs.name, bs.user_name
order by 2,bs.backup_finish_date DESC

open dbsize_cursor
 fetch next from dbsize_cursor
 into @bsdate,@dbsname, @bfdate, @dtotalsize, @ddatasize, @dlogsize, @bfullsize 
 IF @@FETCH_STATUS =0
 Print 'Нет данных'
 WHILE @@FETCH_STATUS = 0
 BEGIN
 print  @bsdate +';'+ @dbsname+';'+ @bfdate+';'+ @dtotalsize+';'+ @ddatasize+';'+ @dlogsize+';'+@bfullsize+';' 
 fetch next from dbsize_cursor into @bsdate,@dbsname, @bfdate, @dtotalsize, @ddatasize, @dlogsize, @bfullsize 
 END
-- Здесь выдается список только для последней базы в списке
  close  dbsize_cursor
  deallocate  dbsize_cursor
  close 
  deallocate dbh_cursor

Проблема возникла в вопросах: как отправить результат в файл и вернуть указатель курсора в начало списка баз при выборке данных во втором курсоре.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.