Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
SQL 2005

 Event Type:	Error
Event Source:	MSSQLSERVER
Event Category:	(2)
Event ID:	9002
Date:		29.01.2014
Time:		9:11:43
User:		N/A

Description:
The transaction log for database 'tempdb' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
 


exec sp_helpdb tempdb
name	fileid	filename	                filegroup	size	             maxsize	              growth	      usage
tempdev	1	d:\_tempdb\tempdb.mdf	PRIMARY	1918976 KB	      83886080 KB	      51200 KB	data only
templog	2	d:\_tempdb\templog.ldf	        NULL	         8855552 KB      83886080 KB	      25600 KB	log only


dbcc sqlperf(logspace)
Database Name	Log Size (MB)	Log Space Used (%)	Status
master	         0,7421875	         51,57895	0
tempdb	         9572,992	         99,78831	0


Подскажите что делать. Постоянно пишет ошибку что transaction log full. темпдб на диске 2 гига, лог - 17 и все равно 99% занято.
29 янв 14, 10:06    [15486452]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
qwertEHOK
Постоянно пишет ошибку что transaction log full. темпдб на диске 2 гига, лог - 17 и все равно 99% занято.
Значит, занято чем то. Может, незакоммиченая траназкция, или какой нибуть объект.

Только лог не 17 гигов, а 9
29 янв 14, 10:15    [15486503]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
qwertEHOK
Подскажите что делать.
Посмотрите хотя бы, что там за объекты.
SELECT 
--	t.SourceID,
	g.groupname,
	schema_name(o.schema_id),
	o.name,
	SUM (p.reserved_page_count) * 8 as reservedpages,
	SUM (p.used_page_count) * 8 as usedpages,
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
			ELSE p.lob_used_page_count + p.row_overflow_used_page_count
		END
		) as pages,
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN p.row_count
			ELSE 0
		END
		) as [rowCount]
FROM sys.dm_db_partition_stats p
	join sys.objects as o
		on o.object_id = p.object_id
		and o.type = 'U'
	join sys.partitions pa
		on pa.partition_id = p.partition_id
	join sys.sysindexes i
		on i.id = p.object_id
		and i.indid = pa.index_id
	join sys.sysfilegroups as g
		on g.groupid = i.groupid
group by o.name, g.groupname, schema_name(o.schema_id)
--order by o.name
order by reservedpages desc
29 янв 14, 10:17    [15486510]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
groupname	(Отсутствует имя столбца)	name	reservedpages	usedpages	pages	rowCount
PRIMARY	dbo	Excel	33936	33888	4235	47106
PRIMARY	dbo	spt_values	200	160	10	2346
PRIMARY	dbo	dba_indexDefragLog	56	56	5	160
PRIMARY	dbo	dba_indexDefragStatus	48	48	4	160
PRIMARY	dbo	spt_monitor	16	16	1	1
PRIMARY	dbo	MSreplication_options	16	16	1	3
PRIMARY	dbo	okp_temp	0	0	0	0
PRIMARY	dbo	spt_fallback_db	0	0	0	0
PRIMARY	dbo	spt_fallback_dev	0	0	0	0
PRIMARY	dbo	spt_fallback_usg	0	0	0	0
PRIMARY	dbo	dba_indexDefragExclusion	0	0	0	0


подскажите, а это за "объекты"?
29 янв 14, 10:19    [15486519]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
qwertEHOK
подскажите, а это за "объекты"?
Это вы насоздавали (или другие люди, или какие то ваши приложения)
Таблица Excel занимает 34 мегабайта, что мало.

Вы может не в контексте tempdb выполнили скрипт?
29 янв 14, 10:25    [15486557]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
подскажите, а это за "объекты"?

Excel и okp_temp - это созданные вами объекты
dba_indexDefrag - это кто то скрипты скачкенные с инета запускал http://sqlfool.com/2009/06/index-defrag-script-v30/
29 янв 14, 10:25    [15486562]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
alexeyvg
Вы может не в контексте tempdb выполнили скрипт?
Да, это база master, а нужно выполнить в tempdb
29 янв 14, 10:26    [15486571]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
Glory
qwertEHOK
подскажите, а это за "объекты"?

Excel и okp_temp - это созданные вами объекты
dba_indexDefrag - это кто то скрипты скачкенные с инета запускал http://sqlfool.com/2009/06/index-defrag-script-v30/
Да, причём созданные в системной базе master :-)
29 янв 14, 10:27    [15486576]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
alexeyvg
Да, причём созданные в системной базе master :-)

Думаю, что ТС запустил предложенный запрос на база master )
29 янв 14, 10:29    [15486587]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
да, извиняюсь это база master

сейчас у нас запущена мегапроцедура для формирования прайсов
но лог стал 52%, это при том что эта процедура вешает сервер часа на 2

Database Name Log Size (MB) Log Space Used (%) Status
master 0,7421875 55,26316 0
tempdb 38447,99 52,36266 0

скрипт показывает
groupname (Отсутствует имя столбца) name reservedpages usedpages pages rowCount
PRIMARY dbo #НомМагИзм256__________ 00000000131E 19552 19472 2332 50340

и таких строк почти 2000
29 янв 14, 10:31    [15486601]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
и таких строк почти 2000

Это временные таблицы. Которые создали ваши пользователи. Сами или через запуск процедур/приложения
29 янв 14, 10:34    [15486623]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
то что сейчас - это понятно. как узнать на чем он вылетает ночью?

как этого избежать?
29 янв 14, 10:37    [15486638]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
qwertEHOK
сейчас у нас запущена мегапроцедура для формирования прайсов
но лог стал 52%, это при том что эта процедура вешает сервер часа на 2
Ну так что вы удивляетесь, что лог вырос и места ему не хватает, если запущена мегапроцедура для мегарасчётов? :-)
Процедура создала кучу временных таблиц, они занимают место.
Впрочем, может это не процедура, может в другом коде баг, или реально необходимы большие объекты...

В общем, отслеживайте объекты, и прикидывайте, они реально нужны или это какой то мусор или баг.

Если мусора нет, то нужно просто увеличить диск под лог темпдб.
29 янв 14, 10:39    [15486654]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
как узнать на чем он вылетает ночью?

Сидеть ночью перед сервером и мониторить глазами.
Сконфигурировать автоматический мониторинг/трассировку и разобрать его утром

qwertEHOK
как этого избежать?

Не создавать так много объектов.
Дать больше места на диске.
29 янв 14, 10:39    [15486655]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
автор
Ну так что вы удивляетесь, что лог вырос и места ему не хватает, если запущена мегапроцедура для мегарасчётов? :-)

дык до запуска процедуры лог был 99%, а после запуска стал 52

или я не понимаю чего-то? 99 это он заполнен или пуст?
29 янв 14, 10:40    [15486661]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
дык до запуска процедуры лог был 99%, а после запуска стал 52

дык где результат запроса до запуска процедуры ?
29 янв 14, 10:41    [15486668]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
Glory
Не создавать так много объектов.
Дать больше места на диске.

Объекты создаются в таком количестве уже месяца 2, и добавляется по 10-15 в месяц
Место выделено по 80 гигов.

Может имеет смысл перенести все на ссд?


ночью идет бэкап и мегапроцедура
сегодня ночью оно начало писать

Event Type:	Error
Event Source:	MSSQLSERVER
Event Category:	(2)
Event ID:	18210
Date:		29.01.2014
Time:		2:01:59
User:		E5\root
Computer:	CS001
Description:
BackupMedium::ReportIoError: write failure on backup device 'F:\RR3_Backups\SSD\ankStr_29.01.2014_2_01_00.bak'. Operating system error 112(error not found).


и следом сразу
Event Type:	Error
Event Source:	MSSQLSERVER
Event Category:	(2)
Event ID:	9002
Date:		29.01.2014
Time:		2:09:51
User:		N/A
Computer:	CS001
Description:
The transaction log for database 'tempdb' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases


Эти события могут быть связаны?
29 янв 14, 10:47    [15486702]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
автор
дык где результат запроса до запуска процедуры ?


как где?
в самом первом сообщении

ДО
dbcc sqlperf(logspace)
Database Name Log Size (MB) Log Space Used (%) Status
master 0,7421875 51,57895 0
tempdb 9572,992 99,78831 0


ПОСЛЕ
Database Name Log Size (MB) Log Space Used (%) Status
master 0,7421875 55,26316 0
tempdb 38447,99 52,36266 0
29 янв 14, 10:49    [15486712]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
Объекты создаются в таком количестве уже месяца 2, и добавляется по 10-15 в месяц

Кроме количества объектов, есть еще и число записей в них.

qwertEHOK
Место выделено по 80 гигов.

Под что ? Под лог базы tempdb ?

qwertEHOK
ночью идет бэкап и мегапроцедура
сегодня ночью оно начало писать

вообще то d и f - это разные диски
29 янв 14, 10:51    [15486723]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
автор
дык где результат запроса до запуска процедуры ?


как где?
в самом первом сообщении

ДО
dbcc sqlperf(logspace)
Database Name Log Size (MB) Log Space Used (%) Status
master 0,7421875 51,57895 0
tempdb 9572,992 99,78831 0


ПОСЛЕ
Database Name Log Size (MB) Log Space Used (%) Status
master 0,7421875 55,26316 0
tempdb 38447,99 52,36266 0

Запрос, который формирует список объектов.
Поймите, сервер заполняет лог при выполнении команд, которые вы предаете ему на выполнение.
29 янв 14, 10:54    [15486738]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
Glory
qwertEHOK
Объекты создаются в таком количестве уже месяца 2, и добавляется по 10-15 в месяц

Кроме количества объектов, есть еще и число записей в них.
количество строк = количеству количеству номенклатура, а это около 50к

qwertEHOK
Место выделено по 80 гигов.

Под что ? Под лог базы tempdb ?

под 80 гигов одинаково, выделил вчера после того как начало падать (раньше было без ограничения по размеру и 2 дня уже забивает польностью винт)

qwertEHOK
ночью идет бэкап и мегапроцедура
сегодня ночью оно начало писать

вообще то d и f - это разные диски


я и спросил - может связан как-то неудачный бэкап и рост лога журнала
29 янв 14, 10:56    [15486749]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
Glory
Member

Откуда:
Сообщений: 104760
qwertEHOK
я и спросил - может связан как-то неудачный бэкап и рост лога журнала

Вы спросили - может ли размер свободного/занятого места на диске F влиять на размер свободного/занятого места на диске D
29 янв 14, 10:58    [15486763]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
ок, спасибо.

сначала разберемся с бэкапом, потом с местом, потом посмотрю транзакции которые могут вызывать рост журнала
29 янв 14, 11:05    [15486808]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Использование журнала:
use tempdb;

select top (100)
 t.transaction_id, s.log_space_used, r.session_id
from
 sys.dm_tran_database_transactions t cross apply
 (
  select t.database_transaction_log_bytes_used + t.database_transaction_log_bytes_reserved +
  t.database_transaction_log_bytes_used_system + t.database_transaction_log_bytes_reserved_system
 ) s(log_space_used) left join
 sys.dm_exec_requests r on r.transaction_id = t.transaction_id
order by
 s.log_space_used desc;
29 янв 14, 11:41    [15487025]     Ответить | Цитировать Сообщить модератору
 Re: transaction log for database 'tempdb' is full.  [new]
qwertEHOK
Member

Откуда: Волгоград
Сообщений: 273
invm
Использование журнала:[src]


спасибо, делать
session_id это понятно
но что делать с transaction_id?
29 янв 14, 11:48    [15487070]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить