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

Откуда:
Сообщений: 12
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Просьба, помочь с пересозданием индекса. Ранее не делал. Сбойный объект (база 1С распроведен).Запрос по таблице для указания полей индекса:

SELECT TOP 1000 [_Fld5103_TYPE]
,[_Fld5103_RTRef]
,[_Fld5103_RRRef]
,[_Fld5104_TYPE]
,[_Fld5104_RTRef]
,[_Fld5104_RRRef]

FROM [db_hrm_test_ivan].[dbo].[_InfoRg5102]

имя индекса:_InfoRe5102_ByDims_RR

Сообщение об ошибке после DBCC CHECKDB ('<имя базы>',REPAIR_REBUILD):
Msg 8951, Level 16, State 1, Line 1
Table error: table '_InfoRg5102' (ID 1625824904). Data row does not have a matching index row in the index '_InfoRe5102_ByDims_RR' (ID 2). Possible missing or invalid keys for the index row matching:
Could not repair this error.
Msg 8955, Level 16, State 1, Line 1
Data row (1:1273885:63) identified by (HEAP RID = (1:1273885:63)) with index values '_Fld5103_TYPE = 0x08 and _Fld5103_RTRef = 0x00000079 and _Fld5103_RRRef = 0xA6EB2C768A51323811E41621CCBE09C2 and _Fld5104_TYPE = 0x08 and _Fld5104_RTRef = 0x00000054 and _Fld5104_RRRef = 0xB211000E0C4BAECB11DFA50D71F1704B and HEAP RID = (1:1273885:63)'.
Msg 8951, Level 16, State 1, Line 1
1 дек 14, 12:10    [16930476]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
Glory
Member

Откуда:
Сообщений: 104760
http://msdn.microsoft.com/ru-ru/library/ms188783.aspx
DROP_EXISTING = { ON | OFF }
Указывает, что названный существующий кластеризованный или некластеризованный индекс удаляется и перестраивается. Значение по умолчанию — OFF.
1 дек 14, 12:25    [16930583]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
iva77ru
Member

Откуда:
Сообщений: 12
CREATE NONCLUSTERED INDEX _InfoRe5102_ByDims_RR
ON [db_hrm_test_ivan].[dbo].[_InfoRg5102] (_Fld5103_TYPE (ASC), _Fld5103_RTRef (ASC), _Fld5103_RRRef (ASC), _Fld5104_TYPE (ASC), _Fld5104_RTRef (ASC), _Fld5104_RRRef (ASC))
WITH (DROP_EXISTING = ON);

Не указанные параметры в WITH будут взяты у пересоздаваеммого индекса до удаления или по умолчанию для create ?
1 дек 14, 13:39    [16931111]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
Glory
Member

Откуда:
Сообщений: 104760
iva77ru
Не указанные параметры в WITH будут взяты у пересоздаваеммого индекса

откуда такие фантазии ?
1 дек 14, 13:41    [16931122]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
iva77ru
Member

Откуда:
Сообщений: 12
А есть какая-нибудь фича, чтобы получить код для создания/пересоздания индекса на основе существующего индекса?
1 дек 14, 14:18    [16931337]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
iva77ru
А есть какая-нибудь фича, чтобы получить код для создания/пересоздания индекса на основе существующего индекса?


SMO
1 дек 14, 14:31    [16931404]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
NickAlex66
Member

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

SSMS
1 дек 14, 14:33    [16931414]     Ответить | Цитировать Сообщить модератору
 Re: Как удалить/добавить индекс  [new]
o-o
Guest
iva77ru
А есть какая-нибудь фича, чтобы получить код для создания/пересоздания индекса на основе существующего индекса?

в студии в Object Explorer правой кнопкой мыши по индексу, Script Index As -> Create TO -> хоть куда
предварительно запустить профайлер и отловить, чем они получают такой скрипт
1 дек 14, 14:34    [16931418]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить