Страница 1 из 1

Конвертация базы на 9.1 - failed because one or more objects

Добавлено: 29 авг 2014, 14:46
Zver
Уважаемые форумчане, переходим на 9.1

При попытки конвертации на 9.1 появляется сообщение

Код: Выделить всё

29.08.2014 12:06:06 [KOK_OCT#CONV]:
ALTER TABLE T$ADDSUMOBJ ALTER COLUMN F$SUMCUR DECIMAL(31,15) NOT NULL
29.08.2014 12:06:06 [KOK_OCT#CONV]:
  42000: [Microsoft][ODBC SQL Server Driver][SQL Server]The statistics 'F$SUMCUR' is dependent on column 'F$SUMCUR'.
  42000: [Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE ALTER COLUMN F$SUMCUR failed because one or more objects access this column.
Что это значит и как с этим бороться?

Re: Конвертация базы на 9.1 - failed because one or more obj

Добавлено: 29 авг 2014, 20:55
LaaLaa
В интернетах пишут "You have an index that uses the columns. SQL Server doesn't allow changes to columns that have indexes or constraints on them"
Вы случайно в 8.1 в эту табличку не добавляли дополнительные индексы средствами SQL Server для поля F$SUMCUR?

Re: Конвертация базы на 9.1 - failed because one or more obj

Добавлено: 04 сен 2014, 12:59
Zver
По словам нашего администратора, никаких индексов не добавляли.
Также сравнил индексы из документации по этой таблице с имеющимися в базе.

Есть мнение, что эта ошибка может быть связана со статистикой, которую собирает сервер MS SQL.
Насколько это может быть обосновано?

Re: Конвертация базы на 9.1 - failed because one or more obj

Добавлено: 10 сен 2014, 16:11
edward_K
Судя по инету - обосновано
Вот так вроде можно собрать
http://stackoverflow.com/questions/1182 ... olumn-size

Код: Выделить всё

SELECT DISTINCT
OBJECT_NAME(s.[object_id]) AS TableName,
c.name AS ColumnName,
s.name AS StatName,
s.auto_created,
s.user_created,
s.no_recompute,
s.[object_id],
s.stats_id,
sc.stats_column_id,
sc.column_id,
STATS_DATE(s.[object_id], s.stats_id) AS LastUpdated
FROM sys.stats s JOIN sys.stats_columns sc ON sc.[object_id] = s.[object_id] AND sc.stats_id = s.stats_id
JOIN sys.columns c ON c.[object_id] = sc.[object_id] AND c.column_id = sc.column_id
JOIN sys.partitions par ON par.[object_id] = s.[object_id]
JOIN sys.objects obj ON par.[object_id] = obj.[object_id]
WHERE OBJECTPROPERTY(s.OBJECT_ID,'IsUserTable') = 1
AND (s.auto_created = 1 OR s.user_created = 1)
AND object_id(N'Tabl1') = s.[object_id]
Наверное на основе этого можно написать генератор запроса с DROP STATISTICS. Но вопрос - какие параметры у базы? Вроде как статистика должна в автомате обновляться. И там есть флаг сжимать - наверное нужно ставить.