| 
    
        
     
     | 
    
  | 
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) пробовал, не помогло     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |