Почему SQL Server застрял в базе данных DATABASE_SNAPSHOT_CREATION? - PullRequest
3 голосов
/ 05 мая 2011

У меня есть база данных на рабочем сервере, чей журнал становится огромным, и, пытаясь понять причину, я выполнил следующий запрос:

SELECT name, log_reuse_wait_desc FROM sys.databases

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

Как я могу это исправить?

PS: я использую режим восстановления SIMPLE.

Ответы [ 3 ]

2 голосов
/ 05 мая 2011

ОК - попробуйте запустить DBCC SQLPERF (LOGSPACE).Это скажет вам, сколько из этого файла журнала фактически используется.

2 голосов
/ 02 мая 2014

У меня была похожая проблема, теперь она разбирается:)

-> база данных в простом режиме восстановления, показывая эту DATABASE_SNAPSHOT_CREATION в log_reuse_wait_desc.

что я сделал для ее сортировкиЧтобы запустить следующий скрипт:

use Databasename
go

checkpoint

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

Сценарии, которые я использовал в своем квесте, следующие:

DBCC SQLPERF(LOGSPACE)

select log_reuse_wait_desc, * from sys.databases
where log_reuse_wait_desc != 'NOTHING'


SELECT * FROM sys.dm_exec_requests

checkpoint
0 голосов
/ 05 мая 2011

Есть ли у вас открытые транзакции?Снимки базы данных всегда делаются из базы данных в согласованном состоянии.Если большая транзакция выполнялась, скажем, в течение 10 минут, транзакция должна быть откатана в снимке, прежде чем снимок может быть завершен.

SELECT * FROM sys.dm_exec_requests

Приведенный выше запрос может сказать вам, что выполняется навремя бежит.

...