Как проверить, создается ли статистика автоматически в базе данных SQL Server 2000 с использованием T-SQL?

Некоторое время назад мне пришлось придумать способ очистить все индексы и созданную пользователем статистику из некоторых таблиц в базе данных SQL Server 2005. После нескольких попыток это сработало, но теперь мне нужно, чтобы это работало и в базах данных SQL Server 2000. Для SQL Server 2005 я использовал

ВЫБЕРИТЕ имя ИЗ sys.stats
ГДЕ object_id = object_id(@tableName)
AND auto_created = 0

для получения статистики, созданной пользователем. Однако в SQL 2000 нет таблицы sys.stats. Мне удалось получить индексы и статистику различимым образом из таблицы sysindexes, но я просто не мог понять, какое совпадение sys.stats.auto_created соответствует SQL 2000. Любые указатели?

Кстати: T-SQL, пожалуйста.


person The Shaper    schedule 11.02.2010    source источник


Ответы (2)


Вы можете присоединиться к sysobjects (на основе столбца id) и проверить значение столбца xtype:

C = ограничение CHECK
D = ограничение по умолчанию или DEFAULT
F = ограничение FOREIGN KEY
L = журнал
FN = скалярная функция
IF = встроенная табличная функция
P = хранимая процедура
PK = ограничение PRIMARY KEY (тип K)
RF = хранимая процедура фильтра репликации
S = системная таблица
TF = табличная функция
TR = триггер
U = пользовательская таблица< br> UQ = ограничение UNIQUE (тип K)
V = представление
X = расширенная хранимая процедура

(из документов карты таблиц SQL Server 2000)

Вам нужно что-то вроде:

SELECT SI.name FROM sysobjects AS SO, sysindexes AS SI
WHERE SO.id = SI.id
AND SO.xtype <> 'S'
person adrianbanks    schedule 11.02.2010

INDEXPROPERTY имеет свойство "IsAutoStatistics". Я также напомню, что статистика также хранится в sysindexes, поэтому вы можете получить идентификатор оттуда.

Извините, у меня нет коробки с SQL 2000, чтобы проверить или подтвердить это на...

person gbn    schedule 03.04.2010