Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SILVASS

Automatizando dados sql

Recommended Posts

Olá

Estou com grande problema, tenho que inserir automaticamente no sql, dados que a opção propriedade da pasta de rede traz, como por exemplo o nome e tamanho.

Não faço ideia de como fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algumas stored procedure nao documentadas que podem lhe ajudar.

De bate-pronto lembro da xp_filexist

 

Voce precisa do tamanho da pasta em rede ou listar os arquivos que tem nela?

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lembrei da

EXEC master.dbo.xp_fixeddrives



Creio que você tera que usar xp_cmdhsell mesmo, pois as procs que eu me lembro somente retornam dados e não tamanho:

EXEC master.sys.xp_dirtree N'c:\Backup\', 1, 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que não serve, pois Tenho algumas pastas com informações de backups de outros servidores , dentro do servidor sql.

Preciso saber o tamanho de cada pasta,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por PowerShell é possível:

http://social.technet.microsoft.com/wiki/pt-br/contents/articles/14679.descobrir-tamanho-pastas-powershell.aspx

 

Estou testando algo aqui em um lab com SQL2008, mas não encontrei nada parecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja tentei o power shell, mas da a seguinte erro no segundo comando

Não é possivel localizar um paramento que coincida com o nome do parâmetro attributes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho o meu dar essa msg .. vou continuar tentando.



Estou fazendo assim

 

 

Get-ChildItem c:\servidor-sql -Recurse -Attributes "!Directory" | %{$_.length},

 

Tem alguma outra alteração, sem ser a pasta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer pela primeira versão do post.

Acho que esta ultima, que foi revisada, deve ter tido alguma alteração para o SQL2012.

http://social.technet.microsoft.com/wiki/pt-br/contents/articles/14679.descobrir-tamanho-pastas-powershell/revision/1.aspx



Lá vamos nós.

Estou montando via T-SQL:

 

exemplo:

 declare @table table (dados varchar(max))insert into @table (dados)exec xp_cmdshell 'dir c:\lab\*.*' select * from @table where dados like '%file%'
No meu caso tenho este resultado:
10 File(s) 7.152.302 bytes
Agora estou convertendo este numero para mega.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparece esse erro

 

Get-ChildItem : Não é possível localizar um parâmetro que coincida com o nome de parâmetro 'Attributes'
Em linha:1 caractere:52
+ Get-ChildItem c:\servidor-sql -Recurse -Attributes <<<< "!Directory" | %{$Size+=$_.length}
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Aparece esse erro

 

Get-ChildItem : Não é possível localizar um parâmetro que coincida com o nome de parâmetro 'Attributes'
Em linha:1 caractere:52
+ Get-ChildItem c:\servidor-sql -Recurse -Attributes <<<< "!Directory" | %{$Size+=$_.length}
+ CategoryInfo : InvalidArgument: ( :) [Get-ChildItem], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Não manjo muito de PowerShell, infelizmente.... quem eu conheço que manja fica on somente no facebook e não tenho acesso para atormenta-lo.

 

Bom, via t-sql, consegui chegar a isso:

 declare @table table (dados varchar(max))insert into @table (dados)exec xp_cmdshell 'dir c:\lab\*.*' select * from @table where dados like '%file%' select substring(dados, (charindex('File(s)',dados)+7),99)from @table where dados like '%file%'
Resultado:
10 File(s) 7.152.302 bytes
7.152.302 bytes

 

Melhorando para pegar diretorios também:

 

 declare @table table (dados varchar(max))declare @erro bigint insert into @table (dados)exec xp_cmdshell 'dir c:\arquivos\yamaha.ssh\*.*'  select @erro  = count(*)from @table where dados like '%file%' or dados like '%Dir(s)%' if @erro = 1beginselect 'Não existem arquivos no diretorio informado ou não possui acesso'end else select substring(dados, (charindex('File(s)',dados)+7),99)from @table where dados like '%file%' or dados like '%Dir(s)%' 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

Ajr, a quantidade de bytes que esta apresentando na pasta esta diferente do que o comando me traz.

 

Na pasta aparece

Tamanho

Tamanho em disco

 

Não esta batendo com nenhum dos dois.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas esta diferente muito muito ou sera que é questao de arredondamento de bytes para mega ou gb?

A qtde de arquivos bate ao menos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.