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

Откуда:
Сообщений: 118
Мне нужно вывести пронумерованный список таблиц определенной базы и у каждой таблицы подсчитать количество записей, выведя в отдельное поле. У меня не получается сделать подзапрос с количеством строк каждой таблицы.

ALTER PROC [dbo].[CONSTR_SIO]
AS
BEGIN
DECLARE
@Table_Name nvarchar(50),
@COUNT_ROW Int

--выборка во временную таблицу
SELECT row_number() over(order by [TABLE_NAME]) as ID,
[TABLE_CATALOG],
[TABLE_SCHEMA],
[TABLE_NAME],
[TABLE_TYPE],
row_number() over(order by [TABLE_NAME]) as COUNT_ROW
INTO xxx
FROM [spb].[INFORMATION_SCHEMA].[TABLES]
WHERE TABLE_TYPE = 'BASE TABLE'
order by table_name;

--объявление курсора
DECLARE Cursor_TableName CURSOR FORWARD_ONLY
FOR

SELECT [TABLE_NAME] FROM [spb].[INFORMATION_SCHEMA].[TABLES]
WHERE TABLE_TYPE = 'BASE TABLE'
order by table_name;

OPEN Cursor_TableName

FETCH NEXT FROM Cursor_TableName
INTO @Table_Name

WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE xxx SET COUNT_ROW = (SELECT COUNT(*) FROM @Table_Name) WHERE [TABLE_NAME] = @Table_Name;
FETCH NEXT FROM Cursor_TableName
INTO @Table_Name
END;
CLOSE Cursor_TableName;

END

Может вообще это можно сделать как-то и без курсора? Подскажите плиз
18 июл 13, 10:52    [14582104]     Ответить | Цитировать Сообщить модератору
 Re: Узнать количества записей у каждой таблицы базы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
exec sp_helptext'sp_spaceused'


вам в помощ
18 июл 13, 10:59    [14582162]     Ответить | Цитировать Сообщить модератору
 Re: Узнать количества записей у каждой таблицы базы  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
select
 schema_name(t.schema_id), t.name, sum(p.rows)
from
 sys.tables t join
 sys.partitions p on p.object_id = t.object_id
group by
 schema_name(t.schema_id), t.name;
18 июл 13, 11:00    [14582168]     Ответить | Цитировать Сообщить модератору
 Re: Узнать количества записей у каждой таблицы базы  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Sergey-ZZZ,

select object_schema_name(p.object_id) as Схема, object_name(p.object_id) as Таблица, sum(p.rows) as Колво
from sys.partitions p
where p.index_id in (0, 1)
group by object_schema_name(p.object_id), object_name(p.object_id)
18 июл 13, 11:01    [14582179]     Ответить | Цитировать Сообщить модератору
 Re: Узнать количества записей у каждой таблицы базы  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Наврал. Вот так:
select
 schema_name(t.schema_id), t.name, sum(p.rows)
from
 sys.tables t join
 sys.partitions p on p.object_id = t.object_id
where
 index_id in (0, 1)
group by
 schema_name(t.schema_id), t.name;
18 июл 13, 11:01    [14582182]     Ответить | Цитировать Сообщить модератору
 Re: Узнать количества записей у каждой таблицы базы  [new]
Sergey-ZZZ
Member

Откуда:
Сообщений: 118
invm,
Так просто и так красиво.
Огромное спасибо, братьям по разуму.
18 июл 13, 11:11    [14582240]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить