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

Откуда:
Сообщений: 207
Здравствуйте!

Как (каким запросом из какой системной таблицы или иначе) получить список всех таблиц в БД MS SQL? Надо сделать нечто вроде процедуры, которая будет показывать список всех таблиц и количество записей в них
21 апр 04, 08:43    [639437]     Ответить | Цитировать Сообщить модератору
 Re: Cписок всех таблиц и количество записей в них  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
SELECT OBJECT_NAME(i.id) [Table], CONVERT(INT, rowcnt) [Rows] FROM sysindexes i INNER JOIN sysobjects o ON i.id = o.id WHERE indid < 2 ORDER BY 2 DESC, 1
21 апр 04, 08:56    [639450]     Ответить | Цитировать Сообщить модератору
 Re: Cписок всех таблиц и количество записей в них  [new]
YellowMan
Member

Откуда: острова
Сообщений: 1047
CONVERT(INT, rowcnt) [Rows] - я бы не особо доверял этому...
21 апр 04, 13:45    [640478]     Ответить | Цитировать Сообщить модератору
 Re: Cписок всех таблиц и количество записей в них  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
declare @sql nvarchar(1000), @cnt int, @cntall int

declare @tab table (tablename sysname, cnt int)
set @cntall = 0
declare reindex_cursor cursor
for select name from sysobjects where type = 'u'
open reindex_cursor
declare @tablename sysname
fetch next from reindex_cursor into @tablename
while (@@fetch_status <> -1) begin
set @sql = 'select @cnt = count(*) from ' + @tablename +' (nolock)'
execute sp_executesql @sql, N'@cnt int out', @cnt out
insert into @tab (tablename, cnt) values (@tablename, @cnt)
set @cntall = @cntall + @cnt
fetch next from reindex_cursor into @tablename
end
close reindex_cursor
deallocate reindex_cursor
select * from @tab



для спящего время бодрствования равносильно сну
21 апр 04, 14:28    [640662]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить