Erro de tipo
31/08/2012
0
IF (OBJECT_ID('_CheckList_Arquivos_SQL') IS NOT NULL) drop table _CheckList_Arquivos_SQL
create table dbo._CheckList_Arquivos_SQL (
[Name] varchar(250) , [FileName] varchar(250) , [Size] bigint, [MaxSize] bigint, Growth varchar(100),
Proximo_Tamanho bigint, Situacao varchar(15))
insert into dbo._CheckList_Arquivos_SQL
select convert(varchar, name) as NAME ,Filename ,
cast(Size * 8 as bigint) / 1024.00 Size,
case when MaxSize = -1 then -1 else cast(MaxSize as bigint)* 8 / 1024.00 end MaxSize,
case when substring(cast(Status as varchar),1,2) = 10 then cast(Growth as varchar) + ' %'
else cast (cast((Growth * 8 )/1024.00 as numeric(15,2)) as varchar) + ' MB'end Growth,
case when substring(cast(Status as varchar),1,2) = 10
then (cast(Size as bigint) * 8 / 1024.00) * ((Growth/100.00) + 1)
else (cast(Size as bigint) * 8 / 1024.00) + cast((Growth * 8 )/1024.00 as numeric(15,2))
end Proximo_Tamanho ,
case when MaxSize = -1 then 'OK' -- OK
when
( case when substring(cast(Status as varchar),1,2) = 10
then (cast(Size as bigint)* 8 / 1024.00) * ((Growth/100.00) + 1)
else (cast(Size as bigint) * 8/ 1024.00) + cast((Growth * 8 )/1024.00 as numeric(15,2))
end
) < (cast(MaxSize as bigint) * 8/1024.00) then 'OK' else 'PROBLEMA'
end Situacao
from master..sysaltfiles with(nolock)
order by Situacao, Size desc
Logo depois o script pra inseri em arquivo:
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=E:\CheckList\CheckList do Banco de Dados.xls;',
'SELECT [DataBase],[File Name],[Tamanho(MB)],[Tamanho Max(MB)],[Crescimento],[Próximo Tamanho], [Situacao] FROM [Arquivos SQL$]')
select Name,FileName,Size,MaxSize,Growth,Proximo_Tamanho,Situacao
from dbo._CheckList_Arquivos_SQL
order by Situacao desc, Size desc
E retorna o seguinte erro:
Error converting data type varchar to float.
Verifiquei os tipo definidos na criação da procedure e não encontrei o erro ainda. Alguém consegue me dar uma dica.
Agradeço desde já!
Jerfeson
Posts
26/09/2012
Marcos Kruger
Para encontrar o problema quebre o seu código em pequenas partes, exemplo deixa apenas uma coluna simplificando a parte do case até encontrar a parte que está dando problema.
Talvez está nessa parte abaixo, depende dos valores que vem para o campo.
cast((Growth * 8 )/1024.00 as numeric(15,2))
Isolando o código em várias partes é um bom caminho para descobrir alguns problemas.
Outra dica é alterar o arquivo CheckList do Banco de Dados.xls deixando somente uma linha para ver se dá o problema.
[]'s
27/09/2012
Jerfeson
27/09/2012
Alisson Santos
Edenta e verifique os casts.
Clique aqui para fazer login e interagir na Comunidade :)