В SQL Server, когато се използва Transact-SQL, намаляването на размера на файл с данни изисква различен синтаксис за увеличаването му. За да намалите размера на файла с помощта на T-SQL, използвайте DBCC SHRINKFILE
команда и посочете името на файла с данни заедно с размера, до който искате да го намалите.
По-долу са дадени примери за намаляване на размера на файла с данни в SQL Server с помощта на T-SQL.
Основен пример
Ето основен пример за намаляване на размера на файла с данни с помощта на T-SQL:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2, 5); GO
Това вероятно е съвсем разбираемо. Първо, преминаваме към базата данни, чийто файл с данни искаме да променим. След това използваме DBCC SHRINKFILE
за да посочите кой файл с данни и до какъв размер на файла да го намалите. Това е в MB, така че нашият пример ще го намали до 5MB.
Намалете го до размера на файла по подразбиране
Ако не посочите размер на файла, файлът ще бъде намален до размера по подразбиране. Размерът по подразбиране е размерът, определен при създаването на файла.
Пример:
USE Solutions; GO DBCC SHRINKFILE (Solutions_dat_2); GO
Отрежете файла с данни
Можете да съкратите файла с данни, като използвате TRUNCATEONLY
аргумент.
Ето един пример:
USE Solutions; GO DBCC SHRINKFILE ('Solutions', TRUNCATEONLY); GO
Изпразване на файл с данни
Можете също да изпразните файл с данни, като използвате EMPTYFILE
аргумент.
Пример:
DBCC SHRINKFILE (Solutions2, EMPTYFILE); GO
Това мигрира всички данни от посочения файл към други файлове в същата файлова група. Следователно, ще трябва да се уверите, че това не е единственият файл във файловата група (в противен случай ще получите грешка). EmptyFile също така ви уверява, че няма да бъдат добавени нови данни към файла.
След като изпразните файла, можете да го премахнете, ако искате да направите това. Ето пример за премахване на изпразнения файл:
ALTER DATABASE Solutions REMOVE FILE Solutions2; GO
И можем да проверим дали е премахнат, като изпълним следното:
USE Solutions; GO SELECT file_id, name, type_desc, physical_name, size, max_size FROM sys.database_files ; GO