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

Откуда: Москва
Сообщений: 371
Здравствуйте. Сразу скажу, что новичок в MS SQL.
Стоит MS SQL 2008. Таблица на несколько десятков миллионов строк.
Когда выбираю значения по определенному показателю все нормально, как только даю запрос по другому показателю (простой запрос SELECT с выражением WHERE по внешнему ключу) вываливается в ошибку. Дальнейшие эксперименты показали, что ошибка не возникает на данному значению внешнего ключа, если не выбирать все столбцы. Но если выбираю все столбцы ошибка в обязательном порядке выводится.

Также сделал Rebuild индекса (он также и первичный ключ). Все это дело вывалилось в то, что прикреплено.

Помогите, что это такое? Можно восстановить базу данных (чтобы все запросы шли нормально) и если можно, то как это сделать?

К сообщению приложен файл. Размер - 0Kb
24 ноя 09, 14:21    [7970658]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Homosum
Здравствуйте. Сразу скажу, что новичок в MS SQL.
Стоит MS SQL 2008. Таблица на несколько десятков миллионов строк.
Когда выбираю значения по определенному показателю все нормально, как только даю запрос по другому показателю (простой запрос SELECT с выражением WHERE по внешнему ключу) вываливается в ошибку.

А текст ошибки вы не пробовали прочитать ?
24 ноя 09, 14:22    [7970665]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
iljy
Member

Откуда:
Сообщений: 8711
Homosum,

у вас на картинке скроллер не работае, не получилось сообщение об ошибке посмотреть может все-таки сами процитируете?
24 ноя 09, 14:23    [7970675]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
вываливается в ошибку.


В какую?
24 ноя 09, 14:23    [7970677]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371


К сообщению приложен файл. Размер - 0Kb
24 ноя 09, 14:27    [7970720]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Homosum

Сервер вам всего лишь сообщил, что не смог создать нужный индекс за отведенное вами же время
Наверное вы задали слишком малый timeout для действий над таблицей в несколько десятков миллионов строк
24 ноя 09, 14:30    [7970755]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371
А как задается тайм аут?
24 ноя 09, 14:32    [7970771]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Tools - Options - Query Execution - Execution time-out
24 ноя 09, 14:39    [7970850]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371
А что делать с Rebuildo'м индекса? Он так уже сутки стоит. Его закрыть или оставить. Чем это черевато?
24 ноя 09, 14:42    [7970876]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Homosum
А что делать с Rebuildo'м индекса? Он так уже сутки стоит. Его закрыть или оставить. Чем это черевато?

Зачем вы вообще запускали операцию, о времени выполнения которой не имеете представления ?
24 ноя 09, 14:54    [7970970]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
iljy
Member

Откуда:
Сообщений: 8711
Homosum,
Попробуйте
ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
go

ALTER INDEX  PK_FactValues ON [dbo].FactValues DISABLE

DBCC CHECKDB('dbname', REPAIR_ALLOW_DATA_LOSS)

ALTER INDEX  PK_FactValues ON [dbo].FactValues REBUILD
go

ALTER DATABASE dbname SET MULTI_USER 
go
но учтите, что при этом все пользователи от базы отваляться. Если так нельзя - попробуйте просто ALTER INDEX
24 ноя 09, 14:55    [7970983]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371
Спасибо, а что значит, что пользователи отваляться? Имеется ввиду, те пользователи, которые в данный момент времени подсоединены к базе данных?

И если не сложно, то большая просьба, кратко прокомментировать строки, не люблю просто тупо лечить, хочется разбираться в заболевании.
24 ноя 09, 14:57    [7971011]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Homosum
Спасибо, а что значит, что пользователи отваляться? Имеется ввиду, те пользователи, которые в данный момент времени подсоединены к базе данных?

И если не сложно, то большая просьба, кратко прокомментировать строки, не люблю просто тупо лечить, хочется разбираться в заболевании.
В хелпе все давно прокомментировано.
24 ноя 09, 14:58    [7971018]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Homosum


И если не сложно, то большая просьба, кратко прокомментировать строки, не люблю просто тупо лечить, хочется разбираться в заболевании.

Превышение таймаута - это не заболевание сервера.
Это выбор клиента, который сам решил ограничить время выполнения запроса
24 ноя 09, 14:59    [7971030]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371
У меня не был установлен тайм аут. Там было значение 0.
24 ноя 09, 15:12    [7971143]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Homosum
У меня не был установлен тайм аут. Там было значение 0.

Это не меняет положения вещей. Таймаут все равно задает клиент, а не сервер
24 ноя 09, 15:14    [7971156]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Homosum
Member

Откуда: Москва
Сообщений: 371
Еще одна возможная неприятность с пересозданием индекса. Только сейчас заметил, что места на диске осталось 44 кб:)
Туплю...
24 ноя 09, 15:26    [7971265]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Glory
Homosum
У меня не был установлен тайм аут. Там было значение 0.

Это не меняет положения вещей. Таймаут все равно задает клиент, а не сервер

И какой будет тайм-аут клиента (SSMS ) в случае установки в вами указанном месте (Tools - Options - Query Execution - Execution time-out) значение = 0 ?
С уважением, Алексей
24 ноя 09, 16:41    [7972061]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleksey-K
Glory
Homosum
У меня не был установлен тайм аут. Там было значение 0.

Это не меняет положения вещей. Таймаут все равно задает клиент, а не сервер

И какой будет тайм-аут клиента (SSMS ) в случае установки в вами указанном месте (Tools - Options - Query Execution - Execution time-out) значение = 0 ?
С уважением, Алексей

- Нажмите в данном диалоге кнопку со знаком вопороса
- Наведите курсор мыши на данную настройку
- Щелкните левой кнопкой мыши
- Читайте открывшуюся главу хелпа
24 ноя 09, 16:49    [7972157]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Glory
Aleksey-K
Glory
Homosum
У меня не был установлен тайм аут. Там было значение 0.

Это не меняет положения вещей. Таймаут все равно задает клиент, а не сервер

И какой будет тайм-аут клиента (SSMS ) в случае установки в вами указанном месте (Tools - Options - Query Execution - Execution time-out) значение = 0 ?
С уважением, Алексей

- Нажмите в данном диалоге кнопку со знаком вопороса
- Наведите курсор мыши на данную настройку
- Щелкните левой кнопкой мыши
- Читайте открывшуюся главу хелпа

Напрасно вы иронизируете..
Вы не ответили на вопрос. У автора топика и стояло в этом поле значение 0!
Значит дело не в тайм-ауте клиента. Ошибку он же получил из сессии SSMS, где и запускал команду.
С уважением, Алексей
24 ноя 09, 18:29    [7972921]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
iljy
Member

Откуда:
Сообщений: 8711
Aleksey-K,

вы знаете, из топика до сих пор не понятно (по крайней мере мне) какую же ошибку получил автор. Я например сильно сомневаюь, что операция REBUILD INDEX могла упасть с ошибкой
Execute SQL statement: SELECT TOP.... FROM ... Timeout expired.

так что дело тут вообще может быть не в таймаутах.
24 ноя 09, 19:03    [7973041]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleksey-K
Напрасно вы иронизируете..
Вы не ответили на вопрос. У автора топика и стояло в этом поле значение 0!
Значит дело не в тайм-ауте клиента. Ошибку он же получил из сессии SSMS, где и запускал команду.
С уважением, Алексей

Т.е. это только я вижу на скриншоте сообщения об ошибке слова Timeout expired ?
24 ноя 09, 19:27    [7973107]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
iljy
Aleksey-K,

вы знаете, из топика до сих пор не понятно (по крайней мере мне) какую же ошибку получил автор. Я например сильно сомневаюь, что операция REBUILD INDEX могла упасть с ошибкой
Execute SQL statement: SELECT TOP.... FROM ... Timeout expired.

так что дело тут вообще может быть не в таймаутах.

Нет. .я был не прав..
Дело в том на слайде с ошибкой у автора показана команда, не имеющяя отношения к Rebuild индекса. Получается, что он из SSMS запустил перестройку индекса, а из клиентского приложения, в сессии которой @@LOCK_TIMEOUT > 0, выполняет приведенную команду (SELET TOP(200)....). Т.е. результат прогназируемый для большой таблицы. Другое дело, что Glory советут смотреть настройки SSMS, а надо бы "слазить" в клиентское приложение и увеличивать там Time out, а лучше, просто не запиматься перестройкой индекса в часы нагрузки сервера.
С уважением, Алексей
24 ноя 09, 19:35    [7973124]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
Glory
Aleksey-K
Напрасно вы иронизируете..
Вы не ответили на вопрос. У автора топика и стояло в этом поле значение 0!
Значит дело не в тайм-ауте клиента. Ошибку он же получил из сессии SSMS, где и запускал команду.
С уважением, Алексей

Т.е. это только я вижу на скриншоте сообщения об ошибке слова Timeout expired ?

Ошибка есть, но не на команду перестройки индекса. Может все-таки команда был выполнена из клиентского приложения, а не из SSMS. Иначе, откуда @@LOCK_TIMEOUT > 0, если в настройках SSMS стоит 0 ?
С уважением, Алексей.
24 ноя 09, 19:38    [7973132]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка при пересоздании индекса  [new]
Glory
Member

Откуда:
Сообщений: 104760
Aleksey-K
Ошибка есть, но не на команду перестройки индекса. Может все-таки команда был выполнена из клиентского приложения, а не из SSMS. Иначе, откуда @@LOCK_TIMEOUT > 0, если в настройках SSMS стоит 0 ?
С уважением, Алексей.

Разумеется не на перестройку индекса. SELECT TOP 200 никак не может быть командой перестроения индекса
24 ноя 09, 19:46    [7973152]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить