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

Откуда:
Сообщений: 1574
когда запускаешь
EXEC   sp_spaceused


database_name	database_size	unallocated space
bank        	174700.94 MB	100169.12 MB

а есть sql запрос (selec ... from .... where ...)
чтобы выдал такую же инф?
2 дек 10, 12:10    [9874191]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Glory
Member

Откуда:
Сообщений: 104751
есть sp_helptext 'sp_spaceused'
2 дек 10, 12:11    [9874200]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Есть, и именно он написан в процедуре sp_spaceused.
2 дек 10, 12:11    [9874201]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
dimakz
Member

Откуда:
Сообщений: 1574
также

это о размере лог файлов бд
dbcc sqlperf (logspace)

а как sql запросом вытащить эти данные?
2 дек 10, 12:13    [9874217]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
dimakz
Member

Откуда:
Сообщений: 1574
мне нужно эти данные складывать в таблички
2 дек 10, 12:13    [9874222]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
declare @t table (
    dbname              sysname
    , log_size          decimal (38, 4)
    , log_space_used    decimal (38, 4)
    , status            int
)
insert into @t
exec ('dbcc sqlperf (logspace)')

select * from @t
2 дек 10, 12:16    [9874241]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
Гавриленко Сергей Алексеевич

А такой оператор exec точно будет работать с табличной переменной ?
2 дек 10, 12:21    [9874283]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
BestZvit
Гавриленко Сергей Алексеевич

А такой оператор exec точно будет работать с табличной переменной ?
На 2008м работает.
2 дек 10, 12:22    [9874297]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
BestZvit
Гавриленко Сергей Алексеевич

А такой оператор exec точно будет работать с табличной переменной ?


create table #temp_table
( database_name nvarchar(255),
log_size_MB decimal,
log_space_used decimal,
statuscol char(10))
insert into #temp_table
execute sp_executesql N'dbcc sqlperf(logspace)'

SELECT * FROM #temp_table
DROP TABLE #temp_table
Так будет и без табличной переменной :)
2 дек 10, 12:28    [9874352]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а почему так не проходит?

 declare @t table (
    database_name varchar  
    , database_size varchar
    , unallocated varchar
 
)
insert into @t
exec ('sp_spaceused')

select * from @t
2 дек 10, 12:31    [9874379]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Glory
Member

Откуда:
Сообщений: 104751
dimakz
а почему так не проходит?

 declare @t table (
    database_name varchar  
    , database_size varchar
    , unallocated varchar
 
)
insert into @t
exec ('sp_spaceused')

select * from @t

Наверное об этом написано в сообщении об ошибке
2 дек 10, 12:33    [9874398]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
BestZvit
Member

Откуда: Гоблино
Сообщений: 2250
kDnZP
Так будет и без табличной переменной :)


Да, я об этом и говорил.

Насколько помню, в прежних версиях подобные экзеки в табл. перем. не удавались.

По версиям 2005 и 2008 - уже не знаю ( (подобные экзеки просто уже не использовал - вся нужная инфа бралась из словаря сиса).
2 дек 10, 12:34    [9874411]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
dimakz
а почему так не проходит?

 declare @t table (
    database_name varchar  
    , database_size varchar
    , unallocated varchar
 
)
insert into @t
exec ('sp_spaceused')

select * from @t


А как вы представляете вставку двух наборов данных с разным количеством столбцев?

* varchar=varchar(1), окромя всего прочего.
2 дек 10, 12:38    [9874447]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а как надо
2 дек 10, 12:39    [9874466]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
dimakz
а как надо
Вы издеваетесь?
2 дек 10, 12:40    [9874477]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
dimakz
а как надо

Вам же ответили... 9874200 - распотрошить процедуру, написать свою.
2 дек 10, 12:41    [9874492]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
kDnZP
dimakz
а как надо

Вам же ответили... 9874200 - распотрошить процедуру, написать свою.


USE master
go
sp_helptext 'sp_spaceused'
На всяк случай, если не в мастере искать попытаетесь)))
2 дек 10, 12:44    [9874520]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35385
Блог
Вам точно это нужно?
Data Collection не подойдет?
2 дек 10, 12:52    [9874623]     Ответить | Цитировать Сообщить модератору
 Re: EXEC sp_spaceused  [new]
dimakz
Member

Откуда:
Сообщений: 1574
что за Data Collection ??
2 дек 10, 14:09    [9875405]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: EXEC sp_spaceused  [new]
LustNoName
Guest
declare @t table (
dbname sysname
, log_size decimal (38, 3)
, log_space_used decimal (38, 3)
, status int
)
insert into @t
exec ('dbcc sqlperf (logspace)')


declare @pages bigint -- Working variable for size calc.
,@dbname sysname
,@dbsize bigint
,@logsize bigint
,@reservedpages bigint
,@usedpages bigint

select @dbsize = sum(convert(bigint,case when status & 64 = 0 then size else 0 end))
, @logsize = sum(convert(bigint,case when status & 64 <> 0 then size else 0 end))
from dbo.sysfiles

select @reservedpages = sum(a.total_pages),
@usedpages = sum(a.used_pages),
@pages = sum(
CASE
When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0
When a.type <> 1 Then a.used_pages
When p.index_id < 2 Then a.data_pages
Else 0
END
)
from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
left join sys.internal_tables it on p.object_id = it.object_id

select
database_name = db_name()
,'database_size (MB)' = convert (dec (15,3),(convert (dec (15,3),@dbsize) + convert (dec (15,3),@logsize))
* 8192 / 1048576)
,'unallocated space (MB)' = convert (dec (15,3),(case when @dbsize >= @reservedpages then
(convert (dec (15,2),@dbsize) - convert (dec (15,2),@reservedpages))
* 8192 / 1048576 else 0 end))
,'log_size (MB)'=(select log_size from @t where dbname = db_name())
,'log_space_used (%)'=(select log_space_used from @t where dbname = db_name())
3 июл 14, 18:22    [16256638]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить