Программно определите доступное бесплатно пространство на базе данных?

Создайте класс Language

public class Language
{
     public string Name{get;set;}
     public string Value{get;set;}
     public override string ToString() { return this.Name;}
}

Затем добавьте в комбинированный список столько языков, сколько хотите:

yourCombobox.Items.Add(new Language{Name="English",Value="En"});
6
задан ryanulit 29 May 2009 в 13:33
поделиться

4 ответа


Выполнить sp_spacedused для каждой базы данных:

--temporary table to hold database names
CREATE TABLE #Databases (name varchar(255))

INSERT INTO #Databases
SELECT name FROM master..sysdatabases

DECLARE abc CURSOR FOR
   SELECT name FROM #Databases

DECLARE @name varchar(255)
DECLARE @sql nvarchar(1024)

OPEN abc

FETCH NEXT FROM abc INTO @name

WHILE @@FETCH_STATUS = 0 
BEGIN
   --build sql to switch to that database...
   SET @sql = 'USE '+@name
   PRINT @sql
   EXECUTE (@sql)

   --and run spaceused on it
   SET @sql = 'EXECUTE sp_spaceused @UpdateUsage=True'
   PRINT @sql
   EXECUTE (@sql)

   FETCH NEXT FROM ABC INTO @name
END

CLOSE abc
DEALLOCATE abc
DROP TABLE #Databases

Пример единичных результатов

Выполнить T-SQL:

USE Contoso
EXECUTE sp_spaceused @UpdateUsage=True

Результаты:

database_name: Contoso
database_size:     85.13 MB
unallocated_space: 15.41 MB

reserved:         70,368 KB (68.7 MB)
data:             42,944 KB (41.9 MB)
index_size:       24,200 KB (23.6 MB)
unused:            3,224 KB ( 3.1 MB)

Сжать:

DBCC SHRINKDATABASE (Contoso)

Еще раз проверить место:

EXECUTE sp_spaceused @UpdateUsage=True

Результаты:

database_name: Contoso
database_size:     69.81 MB
unallocated_space:  0.20 MB

reserved:         70,256 KB (68.6 MB)
data:             43,024 KB (42.0 MB)
index_size:       24,200 KB (23.6 MB)
unused:            3,032 KB ( 3.0 MB)
5
ответ дан 10 December 2019 в 02:52
поделиться

Ответ заключается в том, чтобы не беспокоиться о том, сколько свободного места в базах данных, и вместо этого запускать еженедельное или еженедельное задание по обслуживанию, которое выполняется уплотнение. Скорее всего, вы не сжимаете свои файлы журналов (это место, где у меня обычно был наибольший рост).

Запустите полное резервное копирование, затем запустите резервное копирование журнала транзакций с помощью TRUNCATE_ONLY, а после его завершения запустите DBCC SHRINKFILE () для файлов журналов и баз данных.

Тогда вам нужно будет отслеживать только общее доступное дисковое пространство, а не рост отдельной базы данных.

SQL Server Shrink Database . Вы ОБЯЗАТЕЛЬНО ДОЛЖНЫ выполнить полное резервное копирование и резервную копию журнала транзакций, прежде чем это сработает.

Вы можете получить информацию об отдельных загруженных файлах, запустив "select * from master.dbo.sysdatabases" и "select * from [dbname] .. sysfiles". Я не на 100%, я не трогал экземпляр SQL Server почти год, системные файлы могут быть в «главной» базе данных.

3
ответ дан 10 December 2019 в 02:52
поделиться

Возможно, что-то в представлениях WMI или SQL. Но я должен спросить - каково ваше время, которое вы тратите на это каждый день, по сравнению с покупкой дисководов?

1
ответ дан 10 December 2019 в 02:52
поделиться

Вы можете использовать процедуру sp_spaceused и использовать ее результат, или вы можете сами заглянуть в таблицу sys.allocations_units и подсчитать общее количество использованных страниц. Вы должны смотреть не на уровень «базы данных», а на уровень файлов, потому что некоторые из них могут иметь несколько NDF. Начните с sys.database_files, чтобы увидеть все файлы в файлах базы данных. Столбец размера будет содержать общее количество страниц в базе данных. Суммируйте общее количество страниц из sys.allocation_units, чтобы получить использованные страницы:

with sum_au as (
select data_space_id
    , sum(total_pages) as total_pages
    from sys.allocation_units au 
    group by data_space_id)
select ds.name
    , df.size
    , total_pages as in_use 
    from sys.database_files df
    join sys.data_spaces ds on df.data_space_id = ds.data_space_id
    join sum_au au on au.data_space_id = ds.data_space_id
0
ответ дан 10 December 2019 в 02:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: