Tempdb в sql как почистить. Tempdb в sql как почистить?

С помощью команды age мы можем изменить размер файлов tempdb. Предположив, что начальный размер файла данных и журнала составляет 1 ГБ, мы можем установить его на более низкий уровень с помощью этой команды.

Tempdb в sql как почистить

TEMPDB — это системная база данных Microsoft SQL Server, в которой хранятся временные таблицы, созданные как самим сервером, так и пользователями. Эта база данных создается заново при каждом перезапуске Microsoft SQL Server. Размер этой базы данных по умолчанию неограничен и при необходимости автоматически увеличивается до частей 10% от текущего размера TEMPDB, но эти параметры могут быть переопределены пользователем. По умолчанию минимальный размер этой базы данных, который устанавливается при запуске Microsoft SQL Server, определяется размером базы данных MODEL системы. Журнал транзакций в этой базе данных автоматически очищается, и удаляются только неактивные записи журнала транзакций.

Временные таблицы часто используются в режиме клиент-сервер в «1С:Предприятии 8». Кроме того, TEMPDB используется Microsoft SQL Server при выполнении запросов с операторами GROUP BY, UNION, DISTINCT и т.д.

Проблема

При использовании «1С:Предприятия 8» можно значительно увеличить размер базы данных TEMPDB.

Причиной увеличения размера TEMPDB обычно является невозможность автоматической очистки журнала транзакций и повторного использования свободного пространства в базе данных TEMPDB, поскольку активные транзакции используют объекты базы данных. Основные причины, по которым эти механизмы базы данных TEMPDB блокируются на длительный период времени, следующие:

  • «Большие» транзакции, использующие TEMPDB, выполнение которых занимает большой промежуток времени.
  • Сетевые ошибки, из-за которых Microsoft SQL Server не получает уведомление о потере сетевого подключения. Если клиентская рабочая станция зависает, перезагружается, или будет выключена во время исполнения определяемой пользователем транзакции, то Microsoft SQL Server будет считать, что клиент продолжает работу, и выполняющаяся клиентская транзакция будет по-прежнему активна. Время обнаружения подобной ситуации зависит от настроек параметров сетевого протокола, используемого Windows. Например, при использовании протокола TCP/IP это время составляет 2 часа.
  Как хакеры взламывают сайты. Как хакеры ломают сайты?

Когда в базе данных недостаточно места для завершения активных транзакций, Microsoft SQL Server автоматически увеличивает размер TEMPDB на величину, указанную в параметрах этой базы данных (по умолчанию 10% от текущего размера).

Решение

Вы можете уменьшить размер базы данных TEMPDB до необходимого размера следующим образом:

В этом случае размер базы данных TEMPDB устанавливается по умолчанию, или, если это значение переопределено пользователем, размер устанавливается в соответствии с заданными параметрами.

DBCC SHRINKDATABASE (TEMPDB)

DBCC SHRINKFILE ( Data_file_name, Desired_Data_file_size ) go DBCC SHRINKFILE ( Transaction_file_name, Desired_Transaction_file_size ) go

Обратите внимание, что эти команды лучше всего выполнять, когда пользователи менее активны и требуют привилегий администратора.

Более подробное описание и рекомендации по использованию этих команд см. в документации по Microsoft SQL Server.

База данных системы TEMPDB использует

TEMPDB создается заново при запуске сервера. Если TEMPDB не может быть создана по какой-либо причине, сервер СУБД не будет запущен. По умолчанию размер этой базы данных неограничен и при необходимости автоматически увеличивается до частей, составляющих 10% от текущего размера TEMPDB. По умолчанию минимальный размер этой базы данных, который устанавливается при запуске Microsoft SQL Server, определяется размером базы данных MODEL системы. Журнал транзакций в этой базе данных автоматически очищается, и удаляются только неактивные записи журнала транзакций.

Временные таблицы широко используются в режиме клиент-сервер в «1С:Предприятии 8». Кроме того, TEMPDB используется Microsoft SQL Server при выполнении запросов с GROUP BY, ORDER BY, UNION, SORT, DISTINCT и т.д.

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

  Как подключить Apple Pay на iPhone. Как настроить apple pay.

Каковы возможные решения этой проблемы?

1. 1. в этом случае установите размер базы данных TEMPDB по умолчанию.

2. Сократите базу данных TEMPDB, выполнив следующую команду в Query Analyzer: DBCC SHRINKDATABASE (TEMPDB).

Уменьшите размер отдельных файлов. Для этого выполните следующие команды в Query Analyzer:

DBCC SHRINKFILE (Logical_Data_file_name, Desired_Data_file_Size_In_Megabytes) go DBCC SHRINKFILE (Logical_Transaction_file_name, Desired_Transaction_file_Size_In_Megabytes) go.

Пример.

Сокращение размера базы данных TEMPDB до 20 мегабайт

USE TempDB DBCC SHRINKFILE (tempdev,20) go DBCC SHRINKFILE (templog,20) go

Пункты 2 и 3 также можно выполнить с помощью Management Studio.

Прежде всего, Microsoft настоятельно рекомендует не уменьшать размер файлов TempDB, которые активно используются. Это связано с тем, что «вы можете получить множество ошибок согласованности», которые не только прервут пользовательскую активность («рабочие таблицы промежуточных результатов, созданных во время обработки и сортировки запросов»), происходящую в TempDB в это время, но и могут полностью прервать операцию сокращения. Однако если активность пользователей в вашем случае минимальна или отсутствует, вы можете выполнить следующие 2 шага для уменьшения размера файла TempDB:

METHOD 1: Shrink & Modify file

1. 1.

USE TempDB GO DBCC SHRINKFILE (N’logical_file_name’, 5) — Размер в МБ

Затем выполните оператор ALTER DATABASE для каждого из этих файлов с нужным вам размером. Это приведет к тому, что новый размер будет внесен в master.sys.master_files, системный каталог, который SQL Server использует для создания новой, пустой TempDB при каждом перезапуске сервера/установки.

ИСПОЛЬЗОВАТЬ ХОЗЯИНА ИДТИ СТАРЫМ

Этот метод устраняет риск ошибок согласованности, обеспечивая при этом успешную работу по уменьшению размера файлов. С другой стороны, перед началом работы необходимо отключить всех пользователей. Однако при правильном планировании вы сможете внести эти изменения примерно за 10 минут, если выполните следующие действия:

NET STOP MSSQLSERVER

NET STOP "SQL Server (MSSQLSERVER)".

METHOD 2 — Modify files in Restricted user mode

USE MASTER GO ALTER DATABASE TEMPDB MODIFY FILE (NAME=’logical_file_name’, SIZE=6MB)

  1. Establish a Dedicated Administrator Connection (DAC) from Management Studio to the instance you are working on. You can do this by simply prefixing the tag «Admin:» in front of the instance name. E.g., ADMIN:ProdServer\Instance1
  2. Run ALTER DATABASE with the REMOVE option to mark the ndf files obsolete. USE MASTER GO ALTER DATABASE TEMPDB REMOVE FILE logical_file_name
  3. RDP to the server and.
    1. Stop the instance from command prompt. For default instance:
    C:\>NET START MSSQLSERVER
    NET START "SQL Server (MSSQLSERVER)"
    NET START "SQL Server ( имя экземпляра )"
    C:\>ή
    NET START MSSQL$instancename
    C:\>ALTER DATABASE TEMPDB ADD FILE (NAME=logical_file_name, FILENAME='C:\SQL\Data\logical_file_name.ndf',SIZE=6MB).
    В конце запустите этот запрос еще раз, чтобы убедиться, что все ваши изменения правильно отображаются в основной базе данных:
    SELECT DB_NAME(DATABASE_ID)DBNAME, NAME LOGICAL_FILENAME, *8/1024 SIZE_MB FROM MASTER.SYS.MASTER_FILES WHERE DB_NAME(DATABASE_ID) = 'TEMPDB'.
    Первый метод, конечно, намного проще и быстрее, но вы рискуете испортить данные в TempDB. Более того, процесс сокращения может даже не завершиться из-за одновременного использования этих файлов. Второй способ более сложный, но обеспечивает плавный процесс. Однако это требует времени простоя.

    Ваши конструктивные отзывы всегда приветствуются!

    NET STOP "SQL Server (MSSQLSERVER)".

    Conclusion

Оцените статью
Бизнес блог