#sql #sql-server #ssms
#sql #sql-сервер #ssms
Вопрос:
Меня смущает размер файла, который я создаю с помощью SSMS и Query.
Если я создам файл из SSMS в его папке по умолчанию, что-то вроде «C:Program Files Microsoft SQL Server MSSQL14.NAMEDINSTANCE MSSQL Backup» выходной файл, скажем, Db1.bak, составляет около 198292 КБ
Та же база данных, если я создаю резервную копию с помощью запроса "backup database Db1 to disk='D:Db1.bak'
, размер файла составляет всего 6256 КБ
Иногда другая база данных говорит, что Db2 дает тот же размер файла, т.Е. 6256 КБ (и Db1, и Db2 имеют идентичные (одинаковые) схемы, только данные в них разные.)
А резервное копирование с помощью SSMS дает 33608 КБ, что кажется удовлетворительным.
Я также попытался проверить всю базу данных в SSMS подобным RESTORE VERIFYONLY FROM DISK = 'D:BACKUPDb1.bak'
образом, и результат действителен при каждой проверке базы данных.
GO
Я также попытался удалить Db1 из SSMS и восстановить файл размером менее КБ и проверил некоторые данные из нескольких таблиц (не все), и, похоже, все данные в таблицах отображаются правильно, но размер файла меня не устраивает.
Спасибо.
Комментарии:
1. если я не ошибаюсь, запрос примет сжатую резервную копию.
2. SSMS при использовании графического интерфейса по-прежнему выполняет набор инструкций SQL. Напишите сценарий выполнения запроса SSMS и опубликуйте его (однако ответ может внезапно появиться до того, как вы это сделаете :)).
3. @Srikarmogaliraju Я этого не знал. Но он сжимается до того же размера файла, что и Db1 и Db2??
4. Только если это настройка по умолчанию @Srikarmogaliraju.
5. @Larnu Я не понял ваш комментарий.
Ответ №1:
Я подозреваю, что, как упоминалось изначально, у вас есть сжатие по умолчанию, и использование графического интерфейса с настройками не использует это (и что если вы выбрали сжатие в графическом интерфейсе, вы получите аналогичный размер)
Если параметр сервера backup compression default
on
, даже если вы не упоминаете его в своей backup
команде, compression
будет применен. Так что в обоих случаях было бы compressed backup
. Но это легко увидеть, просто запустите эту команду для обоих backups
:
restore headeronly
from disk = 'here_the_full_path_with_filename';
В 5-м столбце вы получите флаг, если ваш backup
есть compressed
.
Но причина этой разницы в другом, и вы увидите ее при запуске restore headeronly
: вы создали несколько backups
файлов в один и тот же файл.
Вы использовали backup
команду with noinit
из SSMS
, и то же file name
самое, так что теперь этот файл содержит более одного backup
и restore headeronly
покажет их все.