Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Database
Spravovaná instance
Azure SQLDatabáze SQL v Microsoft Fabric
Podrobnosti
| Vlastnost | Hodnota |
|---|---|
| Název produktu | SQL Server |
| ID události | 1101 |
| Zdroj událostí | MSSQLSERVER |
| Součást | SQLEngine |
| Symbolický název | NOALLOCPG |
| Text zprávy | Nelze přidělit novou stránku pro databázi%.*ls, protože skupina souborů%.*ls je plná kvůli nedostatku místa úložiště nebo souborů databáze, které dosáhnou maximální povolené velikosti. Všimněte si, že neomezené soubory jsou stále omezeny na 16TB. Vytvořte potřebné místo přetažením objektů ve skupině souborů, přidáním dalších souborů do skupiny souborů nebo nastavením automatického rozšíření pro existující soubory ve skupině souborů. |
Explanation
V souborové skupině není k dispozici žádné místo na disku.
Uživatelská akce
Následující akce mohou uvolnit místo ve skupině souborů.
Zapněte AUTOGROW.
Přidejte do skupiny souborů více souborů.
Uvolněte místo na disku tím, že do skupiny souborů vynecháte zbytečné indexy nebo tabulky.
Tento T-SQL skript vám pomůže diagnostikovat, které soubory jsou plné, a nabídne příkaz k vyřešení problému. Všimněte si, že nediagnostikuje problémy s místem na disku.
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