Volume tabelas SQL
oOi gente,
Preciso pegar os tamanho de todas as tabelas do sql, pra acompanhar o crescimento . Utilizo p sql express 2012;
Estou usando essa procedure
Preciso converter em MB e depois em GB, eu fiz uma contagem no select acima para converter em MB, não sei se esta certo, alguem poderia me ajudar.
Preciso pegar os tamanho de todas as tabelas do sql, pra acompanhar o crescimento . Utilizo p sql express 2012;
Estou usando essa procedure
set nocount on declare @vname varchar(100) declare @vbase varchar(100) declare @sql varchar(max) create table #tmpTamTabela ( db varchar(100) null , name varchar(100) null , rows int null , reserved varchar(25) null , data varchar(25) null , index_size varchar(25) null , unused varchar(25) null ) create table #tmpTabelas ( tabela varchar(100) null ) declare ct cursor local fast_forward read_only for select name from master..sysdatabases /* ESPECIFIQUE AQUI AS EXCEÇÕES PARA CÁLCULO */ where name not in ('master', 'tempdb', 'model', 'msdb') order by name open ct while 0 =0 begin fetch next from ct into @vbase if @@fetch_status <> 0 break truncate table #tmpTabelas select @sql = ' insert into #tmpTabelas (tabela) select name from [' + rtrim(@vbase) + ']..sysobjects where type = ''U'' ' exec(@sql) declare ct1 cursor local fast_forward read_only for select tabela from #tmpTabelas order by 1 open ct1 while 1 = 1 begin fetch next from ct1 into @vname if @@fetch_status <> 0 break select @sql = ' insert into #tmpTamTabela (name, rows, reserved, data, index_size, unused) exec [' + rtrim(@vbase) + ']..sp_spaceused ''' + rtrim(@vname) + ''' update #tmpTamTabela set db = ''' + rtrim(@vbase) + ''' where db is null ' exec(@sql) end close ct1 deallocate ct1 end close ct deallocate ct select db as 'Banco' , name as 'Nome' , rows as 'Linhas' , convert(int, replace(reserved, ' KB','')) as 'Tamanho total' , 100 * convert(int, replace(reserved, ' KB','')) / 1024 as 'Tamanho total em MB' -- Conversão para MB , convert(int, replace(index_size, ' KB',''))as 'Index' , convert(int, replace(unused, ' KB',''))as 'Não utilizado' -- , convert(int, data,) from #tmpTamTabela order by db, convert(int, replace(reserved, ' KB','')) desc
Preciso converter em MB e depois em GB, eu fiz uma contagem no select acima para converter em MB, não sei se esta certo, alguem poderia me ajudar.
Simone
Curtidas 0
Respostas
Alex Lekao
31/10/2013
Oi Simone, boa tarde!!!
o seu questionamento eh apenas com relacao ao ultimo script certo?
o seu questionamento eh apenas com relacao ao ultimo script certo?
GOSTEI 0
Roniere Almeida
31/10/2013
o que esse script faz Alex em especifico?
GOSTEI 0
Simone
31/10/2013
Oi Alex, seria apenas esse select .
select db as 'Banco' , name as 'Nome' , rows as 'Linhas' , convert(int, replace(reserved, ' KB','')) as 'Tamanho total' , 0,01 * (convert(decimal(10,2), replace(reserved, ' KB','')) / 1024 ) as 'Tamanho total em MB' , convert(int, replace(index_size, ' KB',''))as 'Index' , convert(int, replace(unused, ' KB',''))as 'Não utilizado' -- , convert(int, data,) from #tmpTamTabela order by db, convert(int, replace(reserved, ' KB','')) desc
GOSTEI 0
Alex Lekao
31/10/2013
o que esse script faz Alex em especifico?
No caso do ultimo script que ele colocou como exemplo, vai pegar uma tabela temporaria com todos os dados coletados a partir dos outros scripts e mostrar os tamanho que ocupa em byts, mbyts, etc.. e ordena.
seria isso que vc questionou? rsrsr
GOSTEI 0
Alex Lekao
31/10/2013
faz um teste da seguinte maneira
adicione uma linha similar a essa
e faca mais uma divisao por 1024 que vc tera os gigas normalmentes, nao sei se eh isso que esta querendo.
por exemplo
nao fiz testes, entao deve ter que tratar mais alguma coisa... rsrsr
adicione uma linha similar a essa
, 0,01 * (convert(decimal(10,2), replace(reserved, ' KB','')) / 1024 ) as 'Tamanho total em MB'
e faca mais uma divisao por 1024 que vc tera os gigas normalmentes, nao sei se eh isso que esta querendo.
por exemplo
(replace(reserved, ' KB','')) / 1024 ))/1024
nao fiz testes, entao deve ter que tratar mais alguma coisa... rsrsr
GOSTEI 0
Simone
31/10/2013
Alex,
eu precisava de transformar a qtde que esta em KB em MB e depois em GB.
eu fiz assim
Aparentemente deu certo, só preciso arrumar os campos que a mais que esse select esta retornando, se voce rodar ai no banco vai ter uma noção melhor do que estou falando. Mais agora eu gostaria de somar tudo por base , pra saber quando estiver chegando no limte delas. que no express é 10gb por base
eu precisava de transformar a qtde que esta em KB em MB e depois em GB.
eu fiz assim
select db as 'Banco' , name as 'Nome' , rows as 'Linhas' , convert(int, replace(reserved, ' KB','')) as 'Tamanho total' , 0,01 * (convert(decimal(10,2), replace(reserved, ' KB','')) / 1024 ) as 'Tamanho total em MB' , 0,01 * (convert(decimal(10,2), replace(reserved, ' KB','')) / 1024 ) /1024 as 'Tamanho total em GB' , convert(int, replace(index_size, ' KB',''))as 'Index' , convert(int, replace(unused, ' KB',''))as 'Não utilizado' -- , convert(int, data,) from #tmpTamTabela order by db, convert(int, replace(reserved, ' KB','')) desc
Aparentemente deu certo, só preciso arrumar os campos que a mais que esse select esta retornando, se voce rodar ai no banco vai ter uma noção melhor do que estou falando. Mais agora eu gostaria de somar tudo por base , pra saber quando estiver chegando no limte delas. que no express é 10gb por base
GOSTEI 0
Alex Lekao
31/10/2013
OI Simone, bom dia!!!
Blz... se ta dando certo ate ai maravilha... rsrs
agora eu nao entendi muito bem o que vc esta querendo, vc quer isoladamente base a base? ou vc tem 5 bases e quer somar todas elas?
caso vc queira isolado, vc pode usar mais de um script, percebi que no comeco tem as exceções das bases, talvez seja isso.
Blz... se ta dando certo ate ai maravilha... rsrs
Aparentemente deu certo, só preciso arrumar os campos que a mais que esse select esta retornando, se voce rodar ai no banco vai ter uma noção melhor do que estou falando. Mais agora eu gostaria de somar tudo por base , pra saber quando estiver chegando no limte delas. que no express é 10gb por base
agora eu nao entendi muito bem o que vc esta querendo, vc quer isoladamente base a base? ou vc tem 5 bases e quer somar todas elas?
caso vc queira isolado, vc pode usar mais de um script, percebi que no comeco tem as exceções das bases, talvez seja isso.
GOSTEI 0
Simone
31/10/2013
Oi Alex,
Eu preciso verificar o tamanho de cada base, e arrumar um jeito de ser informada, quando estiver faltando mais ou menos uns 10% pra chegar no tamanho maximo de 10gb.
Esse script, me ajuda a ver qual tabela esta consumindo mais.
Eu preciso verificar o tamanho de cada base, e arrumar um jeito de ser informada, quando estiver faltando mais ou menos uns 10% pra chegar no tamanho maximo de 10gb.
Esse script, me ajuda a ver qual tabela esta consumindo mais.
GOSTEI 0
Alex Lekao
31/10/2013
Oi Simone, boa tarde!!!
Entao nao sei se vc vai conseguir ser alertada sobre isso usando o SQL Express, a nao ser que vc faca uma operacao que o Jefferson indicou em outro topico.
So me esclarece uma duvida, vc consegue executar comandos SQL via prompt de comando usando o SQL Express?
talvez vc consiga montar alguma bat e deixar no agendador de tarefas do windows, so nao sei como ficariam as mensagens ou o envio do email neste caso.
talvez o ideal seja um software especificamente para fazer essa operacao, ai o mesmo deveria ser desenvolvido, eu nao conheco nenhum que ja faca isso, infelizmente.
=./
Entao nao sei se vc vai conseguir ser alertada sobre isso usando o SQL Express, a nao ser que vc faca uma operacao que o Jefferson indicou em outro topico.
So me esclarece uma duvida, vc consegue executar comandos SQL via prompt de comando usando o SQL Express?
talvez vc consiga montar alguma bat e deixar no agendador de tarefas do windows, so nao sei como ficariam as mensagens ou o envio do email neste caso.
talvez o ideal seja um software especificamente para fazer essa operacao, ai o mesmo deveria ser desenvolvido, eu nao conheco nenhum que ja faca isso, infelizmente.
=./
GOSTEI 0
Jefferson Santos
31/10/2013
Realmente o Express não tem o serviço SQL Server Agent para criação de Job e Notificação.
GOSTEI 0
Simone
31/10/2013
É, por isso que falei que vou ter que dar um jeito. rs O express é muito limitado.
Tem como sim, hoje os backup que faço, são todos por arquivo .bat.
Mais em relação ao restante voces saberiam me auxiliar?
Tem como sim, hoje os backup que faço, são todos por arquivo .bat.
Mais em relação ao restante voces saberiam me auxiliar?
GOSTEI 0
Jefferson Santos
31/10/2013
Tem como sim? Backup .bat é diferente de Job criado atraves do SQL Server Agent.
GOSTEI 0
Simone
31/10/2013
Oi Simone, boa tarde!!!
Entao nao sei se vc vai conseguir ser alertada sobre isso usando o SQL Express, a nao ser que vc faca uma operacao que o Jefferson indicou em outro topico.
So me esclarece uma duvida, vc consegue executar comandos SQL via prompt de comando usando o SQL Express?
talvez vc consiga montar alguma bat e deixar no agendador de tarefas do windows, so nao sei como ficariam as mensagens ou o envio do email neste caso.
talvez o ideal seja um software especificamente para fazer essa operacao, ai o mesmo deveria ser desenvolvido, eu nao conheco nenhum que ja faca isso, infelizmente.
=./
Entao nao sei se vc vai conseguir ser alertada sobre isso usando o SQL Express, a nao ser que vc faca uma operacao que o Jefferson indicou em outro topico.
So me esclarece uma duvida, vc consegue executar comandos SQL via prompt de comando usando o SQL Express?
talvez vc consiga montar alguma bat e deixar no agendador de tarefas do windows, so nao sei como ficariam as mensagens ou o envio do email neste caso.
talvez o ideal seja um software especificamente para fazer essa operacao, ai o mesmo deveria ser desenvolvido, eu nao conheco nenhum que ja faca isso, infelizmente.
=./
Jefferson, o meu tem como sim, foi resposta a essa pergunta do Alex .. rs
So me esclarece uma duvida, vc consegue executar comandos SQL via prompt de comando usando o SQL Express?
GOSTEI 0
Jefferson Santos
31/10/2013
SQLCMD. O que eu disse é que tem diferença de Job para um comando Bat.
GOSTEI 0
Roniere Almeida
31/10/2013
o que esse script faz Alex em especifico?
No caso do ultimo script que ele colocou como exemplo, vai pegar uma tabela temporaria com todos os dados coletados a partir dos outros scripts e mostrar os tamanho que ocupa em byts, mbyts, etc.. e ordena.
seria isso que vc questionou? rsrsr
sim, sim, isso mesmo.
GOSTEI 0
Alex Lekao
31/10/2013
o que esse script faz Alex em especifico?
No caso do ultimo script que ele colocou como exemplo, vai pegar uma tabela temporaria com todos os dados coletados a partir dos outros scripts e mostrar os tamanho que ocupa em byts, mbyts, etc.. e ordena.
seria isso que vc questionou? rsrsr
sim, sim, isso mesmo.
blz entao... rsrsr
eh isso ae que o script faz... rsrsr
GOSTEI 0
Roniere Almeida
31/10/2013
obrigado.
GOSTEI 0