Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
selis76
Member

Откуда:
Сообщений: 337
Вопрос -
кто сталкивался с таким поведением:
Есть максимально очищенный файл в группе Primary (данные перемещены в другой файл но в той же группе).
Осталось там только следующее

"DBCC SHRINKFILE: System table SYSFILES1 Page 1:154904 could not be moved to other files because it only can reside in the primary file of the database."

делаю
DBCC SHRINKFILE (N'MIS_PROD1' , TRUNCATEONLY)
GO
никакой реакции - файл остается того же размера
Делаю еще раз Reorganize pages и далее truncateonly никакой реакции (ну должен хоть сколько то дожать файл)
причем Minimum size dbcc показывает 288 "Минимальное количество 8-килобайтных страниц, которое может занимать файл. Оно соответствует минимальному размеру или размеру файла, указанному при создании."

Чем то эта ситуация напоминает тему https://www.sql.ru/forum/555865-2/shrinkdatabase-ne-sokrashhaet-fizicheskiy-razmer-bazy?hl=shrink initial
но там решения не нашли

Сергей С
5 окт 18, 20:19    [21696786]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 33273
Блог
selis76,

Еще раз прочитайте сообщение сервера со слова because
7 окт 18, 07:59    [21697215]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36698
А сколько файлов у вашей базы?

З.Ы. Поиск в гугле не дает ответа, что делать со страницами этой системной таблицы. Но я предполагаю, что когда-то, когда в базу добавляли файлы, понадобилось более одной страницы, чтобы разместить информацию о файлах базы, вот она и упала на свободное на тот момент место.

З.Ы.Ы. Не размещайте пользовательские объекты в группе PRIMARY и жить станет несколько легче.
7 окт 18, 09:09    [21697236]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
selis76
Member

Откуда:
Сообщений: 337
Гавриленко Сергей Алексеевич
А сколько файлов у вашей базы?

З.Ы. Поиск в гугле не дает ответа, что делать со страницами этой системной таблицы. Но я предполагаю, что когда-то, когда в базу добавляли файлы, понадобилось более одной страницы, чтобы разместить информацию о файлах базы, вот она и упала на свободное на тот момент место.

З.Ы.Ы. Не размещайте пользовательские объекты в группе PRIMARY и жить станет несколько легче.


Ну это тестовая база, я там удалял массово некоторые таблицы.
Файлов в группе Primary 2 (на рабочей один файл) , да я его добавил недавно. Есть другие группы там 4 файла.
Я тоже предполагаю что какой то блок лежит гдето ближе к концу файла, но что тогда мешает SQL Server переместить ее если делать
DBCC SHRINKFILE (N'MIS_PROD1', NOTRUNCATE) ? В блокировках я таблицу не наблюдаю
8 окт 18, 11:47    [21697862]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30829
selis76
но что тогда мешает SQL Server переместить ее если делать
DBCC SHRINKFILE (N'MIS_PROD1', NOTRUNCATE) ?
Ну, может там какие то особые типы страниц, которые не перемещаются? То есть это просто баг?

Вы ещё попробуйте шринкать в цикле, до некоего постоянно уменьшающегося target_size. (с шагом, например, 100мб)
8 окт 18, 13:00    [21697964]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
selis76
Member

Откуда:
Сообщений: 337
В общем проблема решилась если делать не shrinkfile
а shrinkdatabase. Сразу делается release unused space файлов, но чтобы она не работала дальше нужно ее срубить
С shrinkfile ничего не помогало
1) ни опускание базы в оффлайн и обратно в онлайн
2) ни различные комбинации запуска shrinkfile
Видимо какая то ошибка MS SQL, правда у меня SP3 2008r2 дальше уже некуда
8 окт 18, 13:02    [21697969]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
uaggster
Member

Откуда:
Сообщений: 770
selis76
В общем проблема решилась если делать не shrinkfile
а shrinkdatabase. Сразу делается release unused space файлов, но чтобы она не работала дальше нужно ее срубить
С shrinkfile ничего не помогало
1) ни опускание базы в оффлайн и обратно в онлайн
2) ни различные комбинации запуска shrinkfile
Видимо какая то ошибка MS SQL, правда у меня SP3 2008r2 дальше уже некуда

Скажите, а у вас таблицы случайно не кучи?
Если кучи - перестройте их предварительно Alter table rebuild.
9 окт 18, 11:56    [21699083]     Ответить | Цитировать Сообщить модератору
 Re: Shrink file не делает release unused space в файле данных , когда там почти пусто  [new]
selis76
Member

Откуда:
Сообщений: 337
uaggster
Скажите, а у вас таблицы случайно не кучи?
Если кучи - перестройте их предварительно Alter table rebuild.

В файле осталась только одна таблица sysfiles1 - а по ней даже запрос нельзя сделать
9 окт 18, 12:52    [21699171]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить