|   |   | 
| 
 | MSSQL SHRINKDATABASE SLEEP TASK | ☑ | ||
|---|---|---|---|---|
| 0
    
        Geroy 25.01.23✎ 13:23 | 
        MSSQL 2016
 База 1.7 Тб Для разработчиков делаем урезанную копию (без 10 больших таблиц) Таблица убираем Truncate, после выполняем SHRINKDATABASE Через некорое время, задание засыпает Task State - SUSPENDED Command - DbccFilesCompact Wait type - SLEEP TASK Как найти причину, почему оно не выполняется?) | |||
| 1
    
        ptiz 25.01.23✎ 13:37 | 
        (0) А оно точно не выполняется? Нагрузки нет на диски и процессор?     | |||
| 2
    
        Geroy 25.01.23✎ 13:45 | 
        К базе не  соединений, к кластеру 1С не подключена
 Нагрузки нет В логах DBCC SHRINKDATABASE for database ID 11 is waiting for the snapshot transaction with timestamp 5101448 and other snapshot transactions linked to timestamp 5101448 or with timestamps older than 123707744 to finish. Куда копать? что это за транзакции | |||
| 3
    
        Kassern 25.01.23✎ 13:47 | 
        (0) Проще наверное выгрузить чистую конфу и на нее накатить через выгрузку/загрузку данных нужные справочники и документы за обрезанный период. Все, что связано само догрузится.     | |||
| 4
    
        OldCondom 25.01.23✎ 13:50 | 
        Гугл на первых выводах говорит:
 Разрешить эту проблему можно одним из следующих способов. Прервите выполнение транзакции, которая блокирует операцию сжатия. Прервите операцию сжатия. При прерывании операции сжатия вся уже выполненная работа сохраняется. Пока операция сжатия ожидает завершения блокирующей транзакции, ничего делать не нужно. | |||
| 5
    
        ptiz 25.01.23✎ 13:51 | 
        (2) Долго висит? Часов 6 может работать эта операция.     | |||
| 6
    
        Geroy 25.01.23✎ 13:53 | 
        (4) Видел данное описание, какую транзакцию ? откуда она
 1. размер базу из бэкапа 2. перевёл в режим Simple 3. Обрезал ненужные таблицы 4. Запускаю шринк (5) бесконечно долго, она засыпает и ждет DBCC SHRINKDATABASE for database ID 11 is waiting for the snapshot transaction with timestamp 5101448 and other snapshot transactions linked to timestamp 5101448 or with timestamps older than 123707744 to finish. | |||
| 7
    
        OldCondom 25.01.23✎ 13:54 | 
        зашринкуй сначала лог транзакций     | |||
| 8
    
        Geroy 25.01.23✎ 13:58 | 
        (7) делаю так
 DBCC SHRINKFILE (N'base_log' , 0, TRUNCATEONLY) DBCC SHRINKFILE (N'base' , 0, TRUNCATEONLY) DBCC SHRINKDATABASE(N'base') | |||
| 9
    
        OldCondom 25.01.23✎ 14:13 | 
        DBCC OPENTRAN
 затем KILL | |||
| 10
    
        Geroy 25.01.23✎ 14:17 | 
        (9) это выполнить перед ?     | |||
| 11
    
        OldCondom 25.01.23✎ 14:28 | 
        (10) Это список активных транзакций. Очевидно, что надо грохнуть ту, что мешает. Очевидно, что ПЕРЕД     | |||
| 12
    
        Geroy 26.01.23✎ 09:57 | 
        (11)
 1.DBCC OPENTRAN No active open transactions. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Completion time: 2023-01-26T09:54:01.6915629+03:00 2. sys.dm_exec_requests Status wait_type Command DatabaseName cpu_time total_elapsed_time percent_complete suspended SLEEP_TASK DbccFilesCompact base 4326958 5087912 29.47133 3. Логи Date 1/26/2023 9:53:17 AM Log SQL Server (Current - 1/26/2023 7:01:00 AM) Source spid70 Message DBCC SHRINKDATABASE for database ID 11 is waiting for the snapshot transaction with timestamp 739176370 and other snapshot transactions linked to timestamp 739176370 or with timestamps older than 778886028 to finish. Куда копать? | |||
| 13
    
        Mihenius 26.01.23✎ 10:58 | 
        А точно ничего больше не мешает?
 USE master GO SELECT * FROM sys.sysprocesses WHERE dbid = DB_ID('Имя базы') GO EXEC sp_who2 -- ищем мешающий номер процесса KILL --убиваем номер мешающего процесса | |||
| 14
    
        katamoto 26.01.23✎ 11:32 | 
        (12) OPENTRAN без параметров в контексте текущей базы выполнится, скорее всего у вас это master был. DBCC OPENTRAN ('base') запускайте     | |||
| 15
    
        Geroy 26.01.23✎ 12:38 | 
        (13)  Только 1 строка с этим заданием
 lastwaittype SLEEP_TASK cmd DbccFilesCompact status suspended (14) DBCC OPENTRAN ('base') - пусто No active open transactions. DBCC execution completed. If DBCC printed error messages, contact your system administrator. Completion time: 2023-01-26T12:33:42.5876795+03:00 | |||
| 16
    
        Geroy 26.01.23✎ 12:39 | 
        В логах каждые 5 минут
 Message DBCC SHRINKDATABASE for database ID 11 is waiting for the snapshot transaction with timestamp 739176370 and other snapshot transactions linked to timestamp 739176370 or with timestamps older than 824183246 to finish. | |||
| 17
    
        Проводкин 26.01.23✎ 12:53 | 
        (16)"waiting for the snapshot transaction with timestamp"  архивчик делается (снимок). может как-то эти процессы начинают друг  друга ждать ?... по итогу все стоит     | |||
| 18
    
        katamoto 26.01.23✎ 12:54 | 
        select * from sys.dm_tran_active_snapshot_database_transactions и там в sequence_num ищите эти таймстампы и смотрите к каким сессиями принадлежат     | |||
| 19
    
        DrZombi гуру 26.01.23✎ 14:48 | 
        (0) Думается оно таки не долго выполняется.
 https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-shrinkdatabase-transact-sql?view=sql-server-ver16 Уменьшает размер файлов данных и журналов в указанной базе данных. Проверьте файлик, возможно он ужо ужался. Перед ужатем вы должны удалить сами данные :) | |||
| 20
    
        DrZombi гуру 26.01.23✎ 14:51 | 
        (16) Переведите базу в режим "Модель восстановления - Простая" :)     | |||
| 21
    
        Geroy 26.01.23✎ 15:10 | 
        (19) ну вы уж слишком, советы для начинающих - это уже давно сделано     | |||
| 22
    
        Geroy 26.01.23✎ 15:12 | 
        (18) Спасибо большое, с помощью "sys.dm_tran_active_snapshot_database_transactions" нашел причину
 Проблемное задание в базе источник, с которого выполнялся бекап для дальнейшего развертывания и урезания таблиц Странно, но факт | |||
| 23
    
        ptiz 26.01.23✎ 15:20 | 
        (22)  Как вариант, можно было в single user перевести перед шринком.     | |||
| 24
    
        Geroy 26.01.23✎ 15:21 | 
        (23) пробовал, не помогло     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |