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

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

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

Сообщение 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.
Что это значит и как с этим бороться?
Программист-самоучка
LaaLaa

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

Сообщение 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?
Zver
Местный житель
Сообщения: 204
Зарегистрирован: 13 ноя 2012, 12:47
Откуда: СПб
Контактная информация:

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

Сообщение Zver »

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

Есть мнение, что эта ошибка может быть связана со статистикой, которую собирает сервер MS SQL.
Насколько это может быть обосновано?
Программист-самоучка
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение 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. Но вопрос - какие параметры у базы? Вроде как статистика должна в автомате обновляться. И там есть флаг сжимать - наверное нужно ставить.
Ответить