Как да проверя дали статистиката е създадена автоматично в SQL Server 2000 DB с помощта на T-SQL?

Преди известно време трябваше да измисля начин да изчистя всички индекси и създадени от потребителите статистики от някои таблици в база данни на SQL Server 2005. След няколко опита проработи, но сега трябва да го накарам да работи и в бази данни на SQL Server 2000. За SQL Server 2005 използвах

ИЗБЕРЕТЕ Име ОТ sys.stats
WHERE object_id = object_id(@tableName)
AND auto_created = 0

за извличане на статистически данни, създадени от потребителя. Въпреки това, SQL 2000 няма таблица sys.stats. Успях да извлека индексите и статистиката по различим начин от таблицата sysindexes, но просто не можах да разбера какво е съвпадението на sys.stats.auto_created за SQL 2000. Някакви насоки?

BTW: T-SQL, моля.


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


Отговори (2)


Можете да се присъедините към sysobjects (на базата на колоната id) и да проверите стойността на колоната xtype:

C = Ограничение CHECK
D = Ограничение по подразбиране или ПО ПОДРАЗБИРАНЕ
F = Ограничение FOREIGN KEY
L = Дневник
FN = Скаларна функция
IF = Вградена таблична функция
P = Съхранена процедура
PK = ограничение PRIMARY KEY (типът е K)
RF = Съхранена процедура на филтър за репликация
S = Системна таблица
TF = Функция на таблица
TR = Тригер
U = Потребителска таблица< br> UQ = УНИКАЛНО ограничение (типът е 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