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

Откуда: Латвия
Сообщений: 1170
Привет всем.

Вот таким селектом отбираю юзерские таблици:
SELECT SYSO.NAME
FROM   SYSOBJECTS SYSO
WHERE  SYSO.TYPE = 'U'
ORDER  BY SYSO.NAME


Шас мне есть все таблици, но мне надо определить которые пустыие и
в которых есть данные.
Можно, конешно, в самои апликацие проитись по етому списку и для
каждои запустить чтото на подобие SELECT TOP 1 * FROM MYTABLE ...
Но ето занимает много времени.
Задумался - нету ли в MS SQL (2008 версия) какие то системные таблици где хранится кокая то
информация об етом ?
Мне потом ешё для каждои таблици надо ешё по колонкам определить котоэрие
пустые а которые с какими то данными - ето ешё запросы на пол дня, а то
таблиц 1800 и колонки в них уима :)

WBR
Janex
6 ноя 15, 12:50    [18377719]     Ответить | Цитировать Сообщить модератору
 Re: Как определить пустые таблици  [new]
Добрый Э - Эх
Guest
Janex,

какую задачу пытаешься решить?
6 ноя 15, 12:52    [18377735]     Ответить | Цитировать Сообщить модератору
 Re: Как определить пустые таблици  [new]
Glory
Member

Откуда:
Сообщений: 104751
Janex
Шас мне есть все таблици, но мне надо определить которые пустыие и
в которых есть данные.

А что такое "пустая" таблица ?
6 ноя 15, 12:56    [18377767]     Ответить | Цитировать Сообщить модератору
 Re: Как определить пустые таблици  [new]
Janex
Member

Откуда: Латвия
Сообщений: 1170
Добрый Э - Эх
Janex,

какую задачу пытаешься решить?


У меня генератор отчётов делается и мне надо чтоб там в дизаинере мне показывалось
только те таблици в которых есть данные, тоесть НЕ пустые, а то в етои акзапте 1800
таблиц а используются только маленькая часть. Мне ети ненужные/пустые нахрен надо
отфильторвать чтоб непоказывало и голову неморочило ...
Но, к стати, сперва надо было погуглить, а то после етого поста сразу нашёл как
ето делать.
Но неуверен что по колонкам тоже так повезёт :)
6 ноя 15, 13:02    [18377822]     Ответить | Цитировать Сообщить модератору
 Re: Как определить пустые таблици  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Janex,

set nocount on
create table #tbl_row (name nvarchar(128), rows char(11), reserved varchar(18), data varchar(18), index_size varchar(18), unused varchar(18))
create table #tbl1 (name nvarchar(128), rows char(11), reserved varchar(50), data varchar(18), index_size varchar(18), unused varchar(18))
declare cur1 cursor fast_forward local for select concat('', schema_name(schema_id), '', '.', '', tt.name, '') name from sys.tables tt
open cur1
declare @name varchar(200)
fetch next from cur1 into @name
while @@FETCH_STATUS = 0
begin
	insert into #tbl_row exec sp_spaceused @name
	insert into #tbl1 (name, [rows], reserved, data, index_size, unused) 
		select @name, [rows], format(cast(replace(reserved,' KB','') as bigint),'000 000 000') , data, index_size, unused from #tbl_row
	delete #tbl_row
	fetch next from cur1 into @name
end


select * from #tbl1 order by reserved
6 ноя 15, 13:10    [18377899]     Ответить | Цитировать Сообщить модератору
 Re: Как определить пустые таблици  [new]
o-o
Guest
select schema_name(o.schema_id) as sch, o.name
from sys.partitions p join sys.objects o 
        on p.object_id = o.object_id
where  p.index_id in (0,1)
       and o.type = 'U'
       and rows = 0          

?
6 ноя 15, 13:12    [18377923]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить