Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza danych SQL w usłudze Microsoft Fabric
Szczegóły
| Attribute | Wartość |
|---|---|
| Nazwa produktu | SQL Server |
| Identyfikator zdarzenia | 1101 |
| Źródło zdarzenia | MSSQLSERVER |
| Składnik | SQLEngine |
| Nazwa symboliczna | NOALLOCPG |
| Tekst wiadomości | Nie można przydzielić nowej strony dla bazy danych "%.*ls", ponieważ grupa plików%.*ls jest pełna z powodu braku miejsca do magazynowania lub plików bazy danych osiągającego maksymalny dozwolony rozmiar. Należy pamiętać, że pliki UNLIMITED są nadal ograniczone do 16 TB. Utwórz niezbędne miejsce, upuszczając obiekty w grupie plików, dodając dodatkowe pliki do grupy plików lub ustawiając automatyczne zwiększanie dla istniejących plików w grupie plików. |
Explanation
Brak dostępnej przestrzeni na dysku w grupie plików.
Akcja użytkownika
Następujące działania mogą udostępnić miejsce w grupie plików.
Włącz AUTOGROW.
Dodaj więcej plików do grupy plików.
Zwolnij miejsce na dysku, usuwając niepotrzebne indeksy lub tabele w grupie plików.
Ten skrypt T-SQL może pomóc zdiagnozować, które pliki są pełne i zaoferować polecenie rozwiązania do rozwiązania problemu. Zwróć uwagę, że nie diagnozuje problemów z przestrzenią na dysku.
set nocount on
declare @prcnt_full int = 95
SELECT db_name(database_id) DbName,
name LogName,
physical_name,
type_desc ,
convert(bigint, SIZE)/128 File_Size_MB ,
convert(bigint,(case when max_size = -1 then 17179869176 else max_size end))/128 File_MaxSize_MB ,
(size/(case when max_size = -1 then 17179869176 else max_size end)) *100 as percent_full_of_max_size
FROM sys.master_files
WHERE file_id != 2
AND (size/(case when max_size = -1 then 17179869176 else max_size end)) *100 > @prcnt_full
if @@ROWCOUNT > 0
BEGIN
DECLARE @db_name_max_size sysname, @log_name_max_size sysname, @configured_max_log_boundary bigint
DECLARE reached_max_size CURSOR FOR
SELECT db_name(database_id) DbName,
name LogName,
convert(bigint, SIZE)/128 File_Size_MB
FROM sys.master_files
WHERE file_id != 2
AND (size/(case when max_size = -1 then 17179869176 else max_size end)) *100 > @prcnt_full
OPEN reached_max_size
FETCH NEXT FROM reached_max_size into @db_name_max_size , @log_name_max_size, @configured_max_log_boundary
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT 'The database "' + @db_name_max_size+'" contains a data file "' + @log_name_max_size + '" whose max limit is set to ' + convert(varchar(24), @configured_max_log_boundary) + ' MB and this limit is close to be reached!' as Finding
SELECT 'Consider using one of the below ALTER DATABASE commands to either change the log file size or add a new file' as Recommendation
SELECT 'ALTER DATABASE ' + @db_name_max_size + ' MODIFY FILE ( NAME = N''' + @log_name_max_size + ''', MAXSIZE = UNLIMITED)' as SetUnlimitedSize
SELECT 'ALTER DATABASE ' + @db_name_max_size + ' MODIFY FILE ( NAME = N''' + @log_name_max_size + ''', MAXSIZE = something_larger_than_' + CONVERT(varchar(24), @configured_max_log_boundary) +'MB )' as IncreaseFileSize
SELECT 'ALTER DATABASE ' + @db_name_max_size + ' ADD FILE ( NAME = N''' + @log_name_max_size + '_new'', FILENAME = N''SOME_FOLDER_LOCATION\' + @log_name_max_size + '_NEW.NDF'', SIZE = 81920KB , FILEGROWTH = 65536KB )' as AddNewFile
FETCH NEXT FROM reached_max_size into @db_name_max_size , @log_name_max_size, @configured_max_log_boundary
END
CLOSE reached_max_size
DEALLOCATE reached_max_size
END
ELSE
SELECT 'Found no files that have reached max log file size' as Findings