Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
Есть проблема с MSSQL : Есть процедура которая выполняется один раз за час, после чего обрезаю лог-файл. Потом запускаю ее еще раз и все крутится сутками и не завершается
Запрос идет бесконечно, похоже что запрос просто "висит" и ждет чтоб ему "дать пинка". В профайлере никакой реакции на прсходящее.

трудно описать словами, приведу некоторые куски кода.
есть таблица типа
CREATE TABLE [dbo].[_tmp2](
	[ID] [int] IDENTITY(1,1) NOT NULL,	
	[Film_ID] [int] NULL,
	[Liz_Gebiet_ID] [int] NULL,
	[Liz_Art_ID] [int] NULL,
.........
) ON [PRIMARY]
В ней групповой Index na все ID's кроме IDENTITY

В самой процедуре есть с десяток запросов типа
 DELETE FROM _tmp2 WHERE ID IN (
  SELECT t.ID
  FROM _tmp2 t
  INNER JOIN _tmp2 t2 ON T2.VK = t.VK AND t2.Film_ID = t.Film_ID AND t2.Liz_Gebiet_ID = t.Liz_Gebiet_ID AND t2.Liz_Art_ID = t.Liz_Art_ID
Вручную запросы отрабативаются за несколъко минут

Как рисовал выше запускаю процедуру 1 раз, все отрабатывается корректно за час. обрезаю протокол, запускаю еще раз все "виснет". потом вдруг поске очередного зауска начинает опять все отрабатыватся зяа час.

Что может так "виснуть" в MS SQL? Есть какие то установы на процедуру типа
CREATE PROCEDURE [dbo].[proc_Name]  WITH EXECUTE AS SELF
которые "форсируют" запросы ? (приведенный не помогает)
27 июл 11, 13:43    [11033846]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
обрезаю протокол

Что за протокол ?

Alex Brown
, запускаю еще раз все "виснет". потом вдруг поске очередного зауска начинает опять все отрабатыватся зяа час.

Ну так вы мониторили, что происходит на сервере с вашим запросом ?
27 июл 11, 13:52    [11033924]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
Да в том и дело что ничего не происходит.. Все крутится бесконечно без сообщений в профайлер.
С самим запросом нет проблем. но процедура отрабатывается через раз.. могу привести более полный код, но нужно ли.

в процедуре обрезаю transactions-протокол (лог-файл) по следующей схеме:

DECLARE @db_name VARCHAR(30)
DECLARE @db_log VARCHAR(30)
DECLARE @query VARCHAR(1000)

	SELECT @db_name = db_name()
	SELECT @db_log = name FROM sys.database_files WHERE file_id = 2
	SET @query = 'ALTER DATABASE '+@db_name+' SET RECOVERY SIMPLE
	checkpoint
	dbcc shrinkfile('+@db_log+', 1, truncateonly)
	ALTER DATABASE '+@db_name+' SET RECOVERY FULL'
	EXEC (@query)

27 июл 11, 14:02    [11034033]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
могу только сказать еще что пошагово все запросы отрабатываются и "Estimated execution plan" на каждый запрос "говорит" что оптимизировать нечего
27 июл 11, 14:08    [11034082]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Alex Brown, может не совсем по теме, но зачем вам вообще модель FULL, если раз в час вы делаете SIMPLE и обрезаете лог?
27 июл 11, 14:25    [11034220]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alex Brown
Да в том и дело что ничего не происходит.. Все крутится бесконечно без сообщений в профайлер.
С самим запросом нет проблем. но процедура отрабатывается через раз.. могу привести более полный код, но нужно ли.

в процедуре обрезаю transactions-протокол (лог-файл) по следующей схеме:

DECLARE @db_name VARCHAR(30)
DECLARE @db_log VARCHAR(30)
DECLARE @query VARCHAR(1000)

	SELECT @db_name = db_name()
	SELECT @db_log = name FROM sys.database_files WHERE file_id = 2
	SET @query = 'ALTER DATABASE '+@db_name+' SET RECOVERY SIMPLE
	checkpoint
	dbcc shrinkfile('+@db_log+', 1, truncateonly)
	ALTER DATABASE '+@db_name+' SET RECOVERY FULL'
	EXEC (@query)

Это вы сами придумали, или посоветовал кто? Если вы лог режете, нахрена вам full? Нахрена заставлять сервер сначала экспандить файл, потом уменьшать? Ему, думаете, заняться больше нечем?

Сообщение было отредактировано: 27 июл 11, 14:32
27 июл 11, 14:31    [11034286]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
у конечно пошли вежливые ответы с хренами.
вообще ответ не потеме.. но если на то пошло то нашел в документации по MS SQL как резать протоколл на 2008 , потому как старый добрый метод типа
DECLARE @db_name VARCHAR(30)
SELECT @db_name = db_name()
backup log @db_name with no_log
работает только до 2005.
мне лень искать ссылко особенно после "хренов"
но метод работает
27 июл 11, 15:15    [11034649]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alex Brown
у конечно пошли вежливые ответы с хренами.
вообще ответ не потеме.. но если на то пошло то нашел в документации по MS SQL как резать протоколл на 2008 , потому как старый добрый метод типа
DECLARE @db_name VARCHAR(30)
SELECT @db_name = db_name()
backup log @db_name with no_log
работает только до 2005.
мне лень искать ссылко особенно после "хренов"
но метод работает
Да хоспаде, лень так лень. Вы просто не понимаете, что делаете, вот и все.
27 июл 11, 15:18    [11034670]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
у конечно пошли вежливые ответы с хренами.

Потому что ваши действия и способы мониторинга вызывают ... удивление
Не говоря уже про терминологию
Профайлер никак не покажет вам _текущее_ состояние коннекта и запроса
То, что запрос выполняется долго не означает, что он завис
Вы думаете, что физическое увелечение файла журнала не требует времени ?
27 июл 11, 15:19    [11034682]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
Гавриленко Сергей Алексеевич
Alex Brown
у конечно пошли вежливые ответы с хренами.
вообще ответ не потеме.. но если на то пошло то нашел в документации по MS SQL как резать протоколл на 2008 , потому как старый добрый метод типа
DECLARE @db_name VARCHAR(30)
SELECT @db_name = db_name()
backup log @db_name with no_log
работает только до 2005.
мне лень искать ссылко особенно после "хренов"
но метод работает
Да хоспаде, лень так лень. Вы просто не понимаете, что делаете, вот и все.

ок раз такое бурное восприятие то кто покажет как надо резать правильно лог на 2008??
27 июл 11, 15:29    [11034741]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
ок раз такое бурное восприятие то кто покажет как надо резать правильно лог на 2008??

Для начала понять разницу между усечением(truncating) и сжатием(shrinking)
27 июл 11, 15:30    [11034752]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
Glory
Alex Brown
у конечно пошли вежливые ответы с хренами.

Потому что ваши действия и способы мониторинга вызывают ... удивление
Не говоря уже про терминологию
Профайлер никак не покажет вам _текущее_ состояние коннекта и запроса
То, что запрос выполняется долго не означает, что он завис
Вы думаете, что физическое увелечение файла журнала не требует времени ?


хорошо .. как делать правилъно мониторинг?
27 июл 11, 15:31    [11034753]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alex Brown
ок раз такое бурное восприятие то кто покажет как надо резать правильно лог на 2008??
Лог надо не резать, а бэкапить. Иначе смысла в полной модели восстановления ровно 0.
27 июл 11, 15:31    [11034758]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
хорошо .. как делать правилъно мониторинг?

Использовать хотя бы стандартный Activity Monitor из студии
27 июл 11, 15:31    [11034764]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
я работаю в конторе где лет 10 режут log
еще раз покажу вот так
backup log @db_name with no_log
dbcc shrinkfile (2,0)
потому как после выполнения несколкьких сотен комманд в так называемом "ночном UPDATE" выходит ошибка что log переполнен и в
с переходом на 2008 данное удовольствие более не возможно. поетому делается альтернатива приведенная выше.
дайте совет конкретно в коде если так уверены в своей правоте
27 июл 11, 15:50    [11034889]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
я работаю в конторе где лет 10 режут log
еще раз покажу вот так
backup log @db_name with no_log
dbcc shrinkfile (2,0)
потому как после выполнения несколкьких сотен комманд в так называемом "ночном UPDATE" выходит ошибка что log переполнен и в
с переходом на 2008 данное удовольствие более не возможно. поетому делается альтернатива приведенная выше.
дайте совет конкретно в коде если так уверены в своей правоте

Так вы определись, что вы хотите сделать с логом то ? Усечь его или сжать ?
А то в данном обсуждении вы эти разные действия объединили в свой термин "резать"
27 июл 11, 15:52    [11034910]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alex Brown
я работаю в конторе где лет 10 режут log
еще раз покажу вот так
backup log @db_name with no_log
dbcc shrinkfile (2,0)
потому как после выполнения несколкьких сотен комманд в так называемом "ночном UPDATE" выходит ошибка что log переполнен и в
с переходом на 2008 данное удовольствие более не возможно. поетому делается альтернатива приведенная выше.
дайте совет конкретно в коде если так уверены в своей правоте
Еще раз: вам надо или регулярно лог бэкапить, или вам не нужна полная модель восстановления.
27 июл 11, 15:58    [11034969]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
я очень хочу его усечь чтобы продолжить выполнение последующих комманд.
на данном етапе удается етого достичь обрезавши указанными способами. какая есть алътернатива?
27 июл 11, 15:58    [11034976]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Kirillich
Member

Откуда:
Сообщений: 581
Alex Brown,

перевсти базу в простую модель восстановления и на полную не переводить
27 июл 11, 15:59    [11034986]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Alex Brown
я очень хочу его усечь чтобы продолжить выполнение последующих комманд.
на данном етапе удается етого достичь обрезавши указанными способами. какая есть алътернатива?
Смешно. Альтернатива - не делать полную модель восстановления, неужели не понятно?
27 июл 11, 15:59    [11034988]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
Гавриленко Сергей Алексеевич
Alex Brown
я работаю в конторе где лет 10 режут log
еще раз покажу вот так
backup log @db_name with no_log
dbcc shrinkfile (2,0)
потому как после выполнения несколкьких сотен комманд в так называемом "ночном UPDATE" выходит ошибка что log переполнен и в
с переходом на 2008 данное удовольствие более не возможно. поетому делается альтернатива приведенная выше.
дайте совет конкретно в коде если так уверены в своей правоте
Еще раз: вам надо или регулярно лог бэкапить, или вам не нужна полная модель восстановления.


мне лог не нужен .. нужна восстановленная база без лога
27 июл 11, 16:00    [11034990]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
я очень хочу его усечь чтобы продолжить выполнение последующих комманд.
на данном етапе удается етого достичь обрезавши указанными способами. какая есть алътернатива?

Для усечения лога в SQL2008 база переводится в simple mode. И все
27 июл 11, 16:01    [11035007]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Alex Brown
Member [заблокирован]

Откуда:
Сообщений: 776
ок кому не лень почитайте
[url=]
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=147587[/url]
27 июл 11, 16:05    [11035041]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alex Brown
ок кому не лень почитайте

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=147587

Мда. У вас раздвоение личности. Хочу усечь журнал, а думаю про сжатие
27 июл 11, 16:09    [11035063]     Ответить | Цитировать Сообщить модератору
 Re: Зависает Query после обрезания Log-файла  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
это наш пациент
просто улыбайтесь и кивайте
27 июл 11, 16:11    [11035083]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить