Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Узнать доступное место во всех БД

$
0
0
Здравствуйте. Подскажите пожалуйста.

Есть 4 сервера, в каждом по 30-40 БД. Само собой, базы расширяются, и следить за всеми через ПКМ->свойства - очень удручает.
Логи режутся, но хочется, чтобы и доступное место было как можно меньше.

Был написан скриптец с курсором (не кидайтесь тапками, я не знаю как это сделать лучше) и использованием sp_spaceused.
DECLARE @db_name NVARCHAR(50)

DECLARE @sql NVARCHAR(100)

DECLARE CUR CURSOR
FOR SELECT NAME
    FROM   sys.databases
    WHERE  name LIKE 'A%' --нужные базы начинаются на А (можно конечно поставить условие database_id > 4, но мне нужны именно базы на А)
		 AND state_desc = 'ONLINE'

OPEN CUR

FETCH NEXT FROM CUR INTO @db_name

WHILE @@fetch_status = 0
    BEGIN
	   SELECT @sql = 'USE ['+@db_name+'];'
	   SELECT @sql = @sql+'EXEC sp_spaceused'
	   EXECUTE (@sql)
	   FETCH NEXT FROM CUR INTO @db_name
    END

CLOSE CUR

DEALLOCATE CUR 


Но пока этот скрипт выполняется (для 10 не таких больших БД ~ 10 секунд) можно ежа родить. А уж если запускать через "Зарегистрированные серверы", там можно тушить свет и ложиться спать. Ну и плюс выводит курсор это все не в очень удобной форме.

Как еще можно сделать скриптец для всех баз на сервере, чтобы выводил это "Доступное место"? Size в sys.master_files дает не то(

Viewing all articles
Browse latest Browse all 7251

Trending Articles